Cod sursa(job #217743)

Utilizator dReaMerAndrei Sofian dReaMer Data 30 octombrie 2008 09:15:48
Problema Combinari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<iostream.h>
#include <math.h>

typedef int stiva[100];
int n,m,k,ev,as;
stiva st;

void init ()
{st[k]=0;}

int succesor ()
{if (st[k]<n)
    {st[k]=st[k]+1; return 1;}
               else return 0;
}

int valid ()
{int i;
if (k>1 && st[k]<st[k-1]) return 0;
for (i=1;i<k;i++)
  if (st[k]==st[i]) return 0;
return 1;
}

int solutie()
{return k==m;}

void tipar ()
{int i;
 for (i=1;i<=m;i++) cout<<st[i]<<" ";
 cout<<endl;
}

void bt()  //partea fixa a algoritmului
{k=1;
init();
while (k>0)
 {as=1; ev=0;
  while(as && !ev)
    {as=succesor();
     if(as) ev=valid();}
  if(as)
      if (solutie()) tipar();
         else {k++; init();}
    else k--;}
}

int main()
{freopen("combinari.in","r",stdin);
 freopen("combinari.out","w",stdout); 
cin>>n;
 cin>>m;
 bt();
 return 0;
}