Cod sursa(job #662220)

Utilizator galbenugalbenu dorin galbenu Data 16 ianuarie 2012 09:30:30
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream>
#include<fstream>
#define lmax 13
using namespace std;
ifstream f("permutari.in",fstream::in);
ofstream g("permutari.out",fstream::out);
typedef short int stiva[lmax];
stiva st;
short int n,k,i,as,ev;
void init()
{st[k]=0;}
bool succesor()
{if(st[k]<n)
{st[k]+=1;return 1;}
return 0;
}
bool valid()
{for(short int i=1;i<k;i++) 
	  if(st[i]==st[k])
		  return 0;
	  return 1;
}
bool solutie()
{return k==n;}
void tipar()
{for(short int i=1;i<=k;i++)
	 g<<st[i]<<" "; 
  g<<"\n";
}
void bt()
{k=1;init();
 while(k)
 {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()
{f>>n;
 bt();
 f.close();
 g.close();
 return 0;
}