Pagini recente » Cod sursa (job #339925) | Cod sursa (job #488344) | Cod sursa (job #306099) | Cod sursa (job #2376056) | Cod sursa (job #1538949)
#include<fstream>
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int N, K, c[100];
void afisare()
{
for (int i = 1 ; i <= K ; i++)
g<<c[i]<<" ";
g<<endl;
}
int ok(int poz)
{
if (poz > 1 && c[poz-1] >= c[poz])
return 0;
return 1;
}
void back(int poz)
{
int i;
for (i = 1 ; i <= N ; i++)
{
c[poz] = i;
// acum practic o sa verific daca e bine sa-l las asa;
// adica daca numarul numarul de dinainte e mai mic strict pentru pozitie > 1
if (ok(poz))
// daca e, atunci verific daca poz = K (am terminat permutarea, si merg mai departe, la urmatoarea permutare
// lucrul asta se face automat din for, practic imi face prima pozitie mereu 1, 2, 3, etc
if (poz == K)
afisare();
else
back(poz + 1);
// daca nu e, atunci merg mai departe sa mi completez sirul
}
}
int main()
{
f>>N>>K;
back(1);
return 0;
}