Cod sursa(job #1649239)

Utilizator alexburdescuBurdescu Alexandru alexburdescu Data 11 martie 2016 12:55:57
Problema Submultimi Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include<iostream>
#include<fstream>
using namespace std;
int st[20],n,i,j,as,ev,k;
ifstream fin("submultimi.in");
ofstream fout("submultimi.out");
void initiere()
{
    st[i]=st[i-1];
}
int succesor()
{
    if(st[i]<n)
    {
        st[i]++;
        return 1;
    }
    return 0;
}
int valid ()
{
    if(i<=n)
    {
        return 1;
    }
    return 0;
}
int solutie()
{
    for(j=1;j<i;j++)
    {
        for(k=j+1;k<=i;k++)
        {
            if(st[j]==st[k])
            {
                return 0;
            }
        }
    }
    return 1;
}
void tipar()
{
    for(j=1;j<=i;j++)
    {
        fout<<st[j]<<" ";
    }
    fout<<"\n";
}
int main ()
{
    fin>>n;
    st[0]=0;
    i=1;
    initiere();
    while(i>0)
    {
        do
        {
            as=succesor();
            ev=valid();
        }
        while(as==1 && ev==0);
            if(as)
            {
                if(solutie())
                {
                    tipar();
                    i++;
                    initiere();
                }
                else
                {
                    i++;
                    initiere();
                }
            }
            else
            {
                i--;
            }
    }
    fin.close();
    fout.close();
    return 0;
}