Cod sursa(job #1002471)

Utilizator manciu_ionIon Manciu manciu_ion Data 27 septembrie 2013 20:36:47
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb

#include <cstdio>
#include <iostream>
#include <time.h>

using namespace std;

int n = 12;
int m = 22;
int x[30];

void _GenComb1(int );
void _GenComb2(int );
void _GenComb3(int );
void _Afisare();

int main()
{
    ///double ti, tf;
	///ti=clock();
    freopen("combinari.in", "rt", stdin);
    freopen("combinari.out", "wt", stdout);

    scanf("%d%d", &m, &n);
    ///_GenComb1(1);
    _GenComb2(1);
    //_GenComb3(1);

	///tf=clock();
	///printf ("\n\n%.4lf\n\n", (tf-ti)/CLK_TCK);

    return 0;
}

void Afisare()
{
    for (int i = 1; i <= n; i++)
    {
        printf("%d ", x[i]);
    }
    printf("\n\n");
}

void _GenComb1(int k)
{
    int i;
    for (i = x[k-1]+1; i <= m-n+k; i++)
    {
        if (k > 1)
        {
            if (i <= x[k-1]) continue;
        }

        x[k] = i;
        if (k < n) _GenComb1(k+1);
    }
}

void _GenComb2(int k)
{
    int i;
    for (i = x[k-1]+1; i <= m-n+k; i++)
    {
        x[k] = i;
        if (k < n) _GenComb2(k+1);
        else {
            Afisare();
        }
    }
}

void _GenComb3(int k)
{
    if (k > n)
    {
        //Afisare();
    }
    else
    for (int i = x[k-1]+1; i <= m-n+k; i++)
    {
        x[k] = i;
        _GenComb3(k+1);
    }
}