Pagini recente » Cod sursa (job #2225426) | Borderou de evaluare (job #1567456) | Cod sursa (job #3219361) | Cod sursa (job #1369687) | Cod sursa (job #1496414)
#include <stdio.h>
#include <stdlib.h>
unsigned n,k,*c;
FILE*g=fopen("combinari.out","w");
void afisare(){
for(unsigned i=0;i<k;i++)
fprintf(g,"%u ",c[i]);
fprintf(g,"\n");
}
void combinari(unsigned q){
for(unsigned i=q;i>=0;i--){
if(i==k-1)
while(c[i]<n){
c[i]++;
afisare();
}
else{
if(c[i]+1<c[i+1]){
c[i]++;
for(unsigned j=i+1;j<k;j++)
c[j]=c[j-1]+1;
i=q;
afisare();
while(c[i]<n){
c[i]++;
afisare();
}
}
}
if(!i)
break;
}
}
int main(){
FILE*f=fopen("combinari.in","r");
fscanf(f,"%u %u",&n,&k);
fclose(f);
c=(unsigned*)malloc(k*sizeof(unsigned));
if(k&&n){
for(unsigned i=0;i<k;i++)
c[i]=i+1;
afisare();
combinari(k-1);
}
fclose(g);
return 0;
}
/*void combinari(){
for(unsigned i=0;i<k-1;i++){
while(c[k-i-1]<=n&&c[k-i-1]<c[k-i]){
c[k-i-1]++;
for(unsigned j=0;j<k;j++)
fprintf(g,"%u ",c[j]);
printf("\n");
if(k-i<k){
combinari();
for(unsigned j=k-i-1;j<k;j++)
c[j]=c[j-1]+1;
}
}
}
}*/