Cod sursa(job #640698)

Utilizator yamahaFMI Maria Stoica yamaha Data 26 noiembrie 2011 12:36:11
Problema Combinari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

int n,k,p,st[20];

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

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

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

int solutie()
{
    if(k==p) return 1;
    return 0;
}

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

void back()
{
     k=1;
     init();
     int as,ev;
     while(k>0)
     {
          do
          {
               as=succesor();
               if(as==1) ev=valid();
          }while(as==1 && ev==0);
          if(as==1)
             if(solutie()==1) tipar();
             else {k++; init();}
             else k--;
     }
}

int main (void)
{
    freopen("combinari.in","r",stdin);
    freopen("combinari.out","w",stdout);
    scanf("%d%d",&n,&p);
    back();
    return 0;
}