Cod sursa(job #2684789)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 14 decembrie 2020 20:43:42
Problema Combinari Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>

#define N_MAX 18

int v[N_MAX];

void combinari(int i,int n,int k,FILE *fout){
  int j;
  if(i>-1){
    if(i==(k-1)){
      v[i]++;
      while(v[i]<=n){
        for(j=0;j<k;j++){
          fprintf(fout,"%d ",v[j]);
        }
        fprintf(fout,"\n");
        v[i]++;
      }
      v[i]--;
      combinari(i-1,n,k,fout);
    }else{
      v[i]++;
      for(j=i+1;j<k;j++){
        v[j]=v[j-1]+1;
      }
      for(j=0;j<k;j++){
        fprintf(fout,"%d ",v[j]);
      }
      fprintf(fout,"\n");
      if(v[k-1]==n){
        combinari(i-1,n,k,fout);
      }else{
        combinari(k-1,n,k,fout);
      }
    }
  }
}
int main()
{
    FILE *fin,*fout;
    int n,k,j;
    fin=fopen("combinari.in","r");
    fscanf(fin,"%d%d",&n,&k);
    fclose(fin);
    fout=fopen("combinari.out","w");
    for(j=0;j<k;j++){
      v[j]=j+1;
      fprintf(fout,"%d ",v[j]);
    }
    fprintf(fout,"\n");
    if(v[k-1]!=n){
      combinari(k-1,n,k,fout);
    }
    fclose(fout);
    return 0;
}