Cod sursa(job #1209772)

Utilizator daniel.amarieiDaniel Amariei daniel.amariei Data 18 iulie 2014 16:55:40
Problema Combinari Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <stdio.h>
#define SET 1
#define NOT_SET 0

int N, K;
int C[32];

void generate(int k)
{
    if (k > K)
    {
        // Afiseaza combinatia curenta
        for (int i = 1; i <= K; ++i)
        {
            printf("%d ", C[i]);
        }
        
        printf("\n");
    }
    else
    {
        for (int i = C[k-1] + 1; i <= N-(K-k); ++i)
        {
            C[k] = i;
            generate(k+1);
        }    
    }
}

void generate2(int n, int k)
{
    if (k == K)
    {
        // Afiseaza combinatia curenta
        for (int i = 1; i <= N; ++i)
        {
            if (C[i] == SET)
            {
                printf("%d ", i);
            }
        }
        
        printf("\n");
    }
    else
    {
        C[n] = SET;
        generate2(n+1, k+1);
        
        if ((N-n) >= (K-k))
        {
            C[n] = NOT_SET;
            generate2(n+1, k);
        }
        
    }
    
}

int main()
{
    freopen("combinari.in", "r", stdin);
    freopen("combinari.out", "w", stdout);
    
    scanf("%d %d", &N, &K);
    
    //generate(1);
    generate2(1, 0);
    
    return 0;
}