Cod sursa(job #596531)

Utilizator cgramadaGramada Cristian cgramada Data 17 iunie 2011 17:49:32
Problema Combinari Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>

#define true 1
#define false 0
#define MAX_N 20

FILE* in;
FILE* out; 
int k, n, s[MAX_N];

void back(int pos) 
{
    int i;

    if (pos == k) 
    {
        for (i = 0; i < k; i++) fprintf(out, "%d ", s[i]);
        fprintf(out, "\n");
    } else 
    {
        s[pos] = 0;

        while (s[pos]++ < (n - k + pos + 1)) 
        {
            int i;
            int valid;
            
            valid = true;
            for (i = 0; i < pos; i++) {
                if (s[pos] <= s[i]) {
                    valid = false;
                    break;
                }
            }

            if (valid) back(pos+1);
        }
    }
}

int main() {
    in = fopen("combinari.in", "rt");
    out = fopen("combinari.out", "wt");

    fscanf(in, "%d %d", &n, &k);
    back(0);

    return 0;
}