Cod sursa(job #590393)

Utilizator ukiandreaAndreea Lucau ukiandrea Data 17 mai 2011 11:39:14
Problema Submultimi Scor 90
Compilator c Status done
Runda Arhiva educationala Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

void print_set(int *a, int len)
{
    int i;

    for (i = 0; i < len; ++i)
        printf("%d ", a[i]);
    printf("\n");
}

int valid_set(int *a, int index)
{
    int i;

    for (i = 0; i < index; ++i)
        if (a[i] >= a[index])
            return 0;

    return 1;
}

void sets(int *a, int len, int k, int index)
{
    int i;

    if (index == k)
        print_set(a, k);
    else
    {
        for (i = 1; i <= len; ++i)
        {
            a[index] = i;
            if (valid_set(a, index))
                sets(a, len, k, index + 1);
        }
    }
}

int main()
{
    int n = -1, k = 0, *a = NULL;

    freopen("submultimi.in", "r", stdin);
    freopen("submultimi.out", "w", stdout);

    scanf("%d", &n);

    a = (int*)calloc(n, sizeof(int));

    for (k = 1; k <= n; k++)
    {
        memset(a, 0, n * sizeof(int));
        sets(a, n, k, 0);   
    }
        
    free(a);

    return 0;
}