Cod sursa(job #1106771)

Utilizator Sever.NastaseSever Nastase Sever.Nastase Data 13 februarie 2014 10:11:34
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>

int v[18];

void comb( int n, int k, int pos, int cifra, FILE *fout ) {
  if ( pos == k ) { // afisam o combinare
    int i;
    for ( i = 0; i < k; i++ )
      fprintf( fout, "%d ", v[i] );
    fprintf( fout, "\n" );
  } else {
    v[pos] = cifra;                         // plaseaza cifra pe pozitie
    comb( n, k, pos + 1, cifra + 1, fout ); // porneste de la pozitia urmatoare, cu cifra urmatoare
    if ( n - cifra >= k - pos )             // daca mai avem destule cifre
      comb( n, k, pos, cifra + 1, fout );   // incercam si cu cifra urmatoare, de la aceeasi pozitie (fara for)
  }
}

int main() {
  FILE *fin, *fout;
  int n, k;

  fin = fopen( "combinari.in", "r" );
  fscanf( fin, "%d%d", &n, &k );
  fclose( fin );

  fout = fopen( "combinari.out", "w" );
  comb( n, k, 0, 1, fout );
  fclose( fout );

  return 0;
}