Pagini recente » Cod sursa (job #1156552) | Cod sursa (job #116771) | Cod sursa (job #1893046) | Cod sursa (job #124884) | Cod sursa (job #1106771)
#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;
}