Pagini recente » Istoria paginii runda/cinesetrezestededimineatadoarmeputin/clasament | Istoria paginii runda/very.easy/clasament | Cod sursa (job #250491) | Istoria paginii runda/47 | Cod sursa (job #1913572)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <math.h>
using namespace std;
ifstream in("damesah.in");
ofstream out("damesah.out");
typedef int sir[100];
sir x,a;
int i,p,k,n,as,ev;
void succ(sir x, int k, int& as){
if(x[k]<n){
as=1;
x[k]=x[k]+1;
}else as=0;
}
void valid(sir x, int k,int& ev){
ev=1;
for(i=1;i<=k-1;i++)
if((x[k]==x[i])||(k-i==abs(x[i]-x[k])))
ev=0;
}
void afis(sir x, int k){
int i,j;
for(i=1;i<=k;i++)
{
for(j=1;j<=k;j++)
{
if(j==x[i]){
out<<j<<" ";
j=k+1;
}
}
}
out<<endl;
}
int main()
{
int okdame=0,nrdame=0;
in>>n;
k=1;
x[k]=0;
while(k>0){
do{
succ(x,k,as);
if(as)
valid(x,k,ev);
}while(as&&!ev);
if(as){
if(k==n){
if(okdame==0){afis(x,k);okdame=1;nrdame++;}
else nrdame++;
}
else{
k++;
x[k]=0;
}
}else k--;
}
out<<nrdame;
return 0;
}