Cod sursa(job #254665)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 7 februarie 2009 13:38:48
Problema Planeta Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.76 kb
#include<stdio.h>
#include<math.h>
int n,k,ev,as,s[100],sol,k1,o;
    void init()
    {
         s[k]=0;
    }

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

    int valid()
    {
        for(int i=1;i<k;i++)
                if(s[k]==s[i])
                              return 0;
        return 1;
    }

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

    void tipar()
    {
         if(sol==k1) 
         {
                    for(int i=1;i<=n;i++)
                            printf("%d ",s[i]);
                    o=1;
        }
    }

    void bt()
    {
         k=1;
         init();
         while(k>0)           
         {
                              as=1;ev=0;
                              while(as && !ev)
                              {
                                as=succesor();
                                if(as)ev=valid();
                              }
                              if(as)
                              if(solutie())
                              {
                                           sol++;
                                           tipar();
                                           if(o==1) break;
                              }
                              else
                              {
                                           k++;
                                           init();
                              }
                              else k--;
         }
    }                      
int main()
{
     freopen("planeta.in","r",stdin);
     freopen("planeta.out","w",stdout);
     scanf("%d%d%",&n,&k1);
     bt();
     return 0;
}