Pagini recente » Cod sursa (job #1429068) | Cod sursa (job #3181290) | Cod sursa (job #511264) | Cod sursa (job #2803040) | Cod sursa (job #616844)
Cod sursa(job #616844)
#include<cstdio>
/*
Sa se genereze toate combinarile de N luate cate K in ordine lexicografica.
Date de intrare
Fisierul de intrare combinari.in contine pe prima linie numerele naturale N si K.
Date de iesire
In fisierul de iesire combinari.out va contine toate combinarile de N luate cate K, fiecare pe o linie noua.
Restrictii
* 1 ≤ N ≤ 18
* 1 ≤ K ≤ N
* Intr-o combinare numerele trebuie scrise in ordine crescatoare
*/
int N,K, viz[19],st[1000];
FILE *f,*g;
void ReadData()
{
fscanf(f,"%d %d",&N,&K);
}
void WriteData ( )
{
int i;
for( i=1;i<=K;i++)
{
fprintf(g,"%d ",st[i]);
}
fprintf(g,"\n");
}
void Back(int top)
{
int i;
if(top == K+1)
{
WriteData();
return;
}
for ( i = 1; i<= N; i++ )
{
if(viz[i] == 0)
{
viz[i] = 1;
st[top] = i;
Back(top+1);
viz[i] = 0;
}
}
}
int main()
{
f = fopen("combinari.in","r");
g = fopen("combinari.out","w");
ReadData();
Back(1);
//printf("\n%d %d lalallala\n",N,K);
return 0;
}