Cod sursa(job #232532)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 15 decembrie 2008 18:44:12
Problema Combinari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
#include<conio.h>

int n,k,K,i;
int *stiva;
FILE *pout;

void init()
{stiva[k]=stiva[k-1];}

bool Am_Succesor()
{
if(stiva[k]<n)
  {stiva[k]++;
  return 1;}
return 0;
}

bool E_Valid()
{
for(i=1;i<k;i++)
  if(stiva[i]==stiva[k])
    return 0;
return 1;
}

bool Solutie()
{return k==K;}

void Tipar()
{
for(i=1;i<=K;i++)
  fprintf(pout,"%d ",stiva[i]);
fprintf(pout,"\n");
}

void back()
{
k=1;
bool AS;
init();
while(k>=1)
  {
  do {} while((AS=Am_Succesor())  && !E_Valid());
  if(AS)
    if(Solutie())  Tipar();
    else  {k++; init();}
  else k--;
  }
}

int main()
{
FILE *pin=fopen("combinari.in","r");
fscanf(pin,"%d",&n);
fscanf(pin,"%d",&K);
fclose(pin);
stiva=new int[n+1];
stiva[0]=0;
pout=fopen("combinari.out","w");
back();
fclose(pout);
delete []stiva;
return 0;
}