Cod sursa(job #1428513)

Utilizator GrecuDianaSorinaGrecu Diana-Sorina GrecuDianaSorina Data 4 mai 2015 18:19:29
Problema Combinari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
using namespace std;
ifstream f("combinari.in");
ofstream g("combinari.out");
int n,i,ev,as,k,st[20],m;
void init(int k,int st[])
{
    st[k]=0;
}
void succesor(int k,int st[],int &as)
{
    if(st[k]<n)
    {
        st[k]=st[k]+1;
        as=1;
    }
        else as=0;
}
void valid(int k,int st[],int &ev)
{
    int i;
    ev=1;
    for(i=1;i<k;i++)
    {
        if(st[k]==st[i]) ev=0;
    }
    if(k>1 && st[k]<st[k-1]) ev=0;
    if(k>n) ev=0;
}
int solutie(int k)
{
    if(k==m) return 1;
        else return 0;
}
void tipar(int k)
{
    int i;
    for(i=1;i<=k;i++)
        g<<st[i]<<" ";
    g<<"\n";
}
void back(int k)
{
    init(k,st);
    while(k>0)
    {
        do
        {
          succesor(k,st,as);
          if(as) valid(k,st,ev);
        }while(as && !ev);

        if(as)
        {
            if(solutie(k)) tipar(k);
                else
                {
                    k++;
                    init(k,st);
                }
        }
            else k--;
    }
}
int main()
{
    f>>n>>m;
    back(1);
    return 0;
}