Cod sursa(job #792640)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 28 septembrie 2012 15:13:10
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream fin("submultimi.in");
ofstream fout("submultimi.out");

short int x[17], n;
bool used[17];

void Write(int k)
{
    for ( int i = 1; i <= k; i++ )
    {
        fout << x[i] << ' ';
    }
    fout << '\n';
}

bool valid(int k, int n)
{
    if ( used[x[k]] )
        return 0;
    if ( x[k] < x[k-1] )
        return 0;
    if ( k > n )
        return 0;
    return 1;
}

void back(int k, int n)
{
    for ( int i = 1; i <= n; i++ )
    {
        x[k] = i;
        if ( valid(k,n))
        {
            used[i] = 1;
            if ( k <= n )
            {
                Write(k);
            }
            back(k+1,n);
            used[i] = 0;
        }
    }
}
int main()
{
    fin >> n;
    back(1,n);
    return 0;
}