Hogy tudnék olyan programot írni? C++
Ami beolvas egy n pozitív egész számot és előállítja az összes olyan egészekből álló sorozatot, amelyre teljesül, 1<=a1<=a2<=...<=an és ai<=i, i€{1,...,n}
Pl.:n=3;
1. 1,1,1
2. 1,1,2
3. 1,1,3
4. 1,2,2
5. 1,2,3
Alapból nem értem, hogy a példában az 1,2,2 és az 1,3,3 miért nem eleme. Valami ötletet tudnátok adni?
"és ai<=i, i€{1,...,n} "
Ezért nem eleme a 1,3,3.
Ha a második elem 3, akkor ez a feltétel nem teljesül, mert i=2 a2=3, a három meg nem kisebb vagy egyenlő mint a 2.
Szia.
Az 1,2,1 nem eleme ennek a sorozatnak?
Csak mert a3<=3
azaz
a3=1
a3=2
a3=3
Szerintem.
#include <iostream>
using namespace std;
int main ()
{
int n;
cout<<"n is an integer and \nn should be greater than 1\n";
cout<<"n: ";
cin>>n; // n should be greater than 1
cout<<'\n';
if (n==1) cout<<"1";
else {
int i;
int* a = new int [n+1]; // a1=1, a2=2, ... ,an=n
for(int j=1; j<=n; j++)
a[j]=1;
int* maxa = new int [n];
for(int j=1; j<=n; j++) // MAXa1=1, MAXa2=2, ... ,MAXan=n
maxa[j]=j;
move_down:
i=n;
if (a[n]<=maxa[n]) {
for(int j=1; j<=n; j++)
cout<<a[j]<<'\t'; //list
cout<<'\n';
++a[n];
goto move_down;
}
cout<<'\n';
move_left:
--i; if(i==1) goto endofprg;
++a[i];
if(a[i]<=maxa[i]) {
for(int k=i+1;k<=n;k++)
a[k] = a[i];
goto move_down;
}
else goto move_left;
}
endofprg:
cout<<"\n\nProgram reached its end.\n";
return 0;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!