Pagini recente » Cod sursa (job #886424) | Cod sursa (job #2876419) | Cod sursa (job #3309923) | Cod sursa (job #147559) | Cod sursa (job #3303707)
#include <fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream cin("damesah.in");
ofstream cout("damesah.out");
int sol[16];
int vidc[15];
int viddp[30];
int vidds[30];
int fctodp(int x,int y, int n){
return x-y+n;
}
int fctods(int x,int y,int n){
return x+y-1;
}
void bkt (int cur,int n,int &nrsol){
if(cur==n+1){
nrsol++;
if(nrsol==1){
for(int i=1;i<=n;i++){
cout<<sol[i]<<" ";
}
cout<<endl;
}
return;
}
for(int i=1;i<=n;i++){
if(vidc[i])continue;
if(viddp[fctodp(cur,i,n)])continue;
if(vidds[fctods(cur,i,n)])continue;
sol[cur]=i;
vidc[i]=1;
viddp[fctodp(cur,i,n)]=1;
vidds[fctods(cur,i,n)]=1;
bkt(cur+1,n,nrsol);
vidc[i]=0;
viddp[fctodp(cur,i,n)]=0;
vidds[fctods(cur,i,n)]=0;
}
}
int main(){
int n,ans=0;
cin>>n;
bkt(1,n,ans);
cout<<ans<<endl;
}