Cod sursa(job #600250)
Utilizator | Andrei Constantinescu Andrei1998 | Data | 30 iunie 2011 22:13:17 |
---|---|---|---|
Problema | Combinari | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.14 kb |
#include<fstream.h>
using namespace std;
//Fisiere
ifstream fin("combinari.in");
ofstream fout("combinari.out");
//Initializare
unsigned short int n,k,v[18];
//Backtracking recursiv
void back(unsigned short int nivel)
{
unsigned short int i=0;
if(nivel==k)
{
for(i=0;i<k;i++)
{
fout<<v[i]<<' ';
}
fout<<'\n';
}
else
{
if(nivel==0)
{
for(i=1;i<=n;i++)
{
v[nivel]=i;
back(nivel+1);
}
}
else
{
for(i=v[nivel-1]+1;i<=n;i++)
{
v[nivel]=i;
back(nivel+1);
}
}
}
}
int main()
{
//Citire
fin>>n;
fin>>k;
//Generare combinari
back(0);
//Incheiere
fin.close();
fout.close();
return 0;
}