Cod sursa(job #2104536)

Utilizator BotzkiBotzki Botzki Data 11 ianuarie 2018 19:55:39
Problema Combinari Scor 100
Compilator cpp Status done
Runda arhivacre Marime 1.38 kb
#include <fstream>


using namespace std;
ifstream fin("combinari.in");
ofstream fout("combinari.out");
int n, p, k;
int st[20];
int viz[20];
inline  void init()
{
    st[k]=0;
}
inline bool succesor()
{
    if(st[k]<n)
    {
        st[k]++;
        return 1;
    }
    else
        return 0;
}
inline bool valid()
{
    if(viz[st[k]])
    {
            return 0;
    }
    else
     {
        if(st[k-1]>st[k])
                return 0;
        else
           {
             viz[st[k]]=1;
               return 1;
           }

      }
}
inline void afisare()
{
    int i;
    for(i=1;i<=p;i++)
        fout<<st[i]<<" ";
    fout<<"\n";
}
inline bool solutie()
{
    return k==p;
}
void backt()
{
   bool es, ev;
    k=1;
    init();
    while(k>0)
    {
        do{
            es=succesor();
            if(es)
                ev=valid();
        }while(es and !ev);
        if(es)//avem succesor
        {
            if(solutie())
                {
                    afisare();
                    viz[st[k]]=0;
                }
                else
                {
                    k++;
                    init();
                }


        }
        else //nu avem succesor
        {
            k--;
            viz[st[k]]=0;
        }
    }
}

int main()
{
    fin>>n>>p;
    backt();
    return 0;
}