Pagini recente » Cod sursa (job #626783) | Cod sursa (job #1349380) | Cod sursa (job #2282703) | Cod sursa (job #265161) | Cod sursa (job #2211349)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,s=0;
bool first=true;
bool C[14],R[14],D1[27],D2[27];
int S[14];
bool diag(int x,int y){
int d1 = x + y;
int d2 = x-y+13;
if (R[y] || C[x] || D1[d1] || D2[d2]){
return 1;
} else{
if(first){
S[y]=x;
}
return 0;
}
}
void bk(int y){
// cout<<y<<'\n';
if(y<=n){
for(int i=1;i<=n;i++){
if(!diag(i,y)){
R[y]=C[i]=D1[i+y]=D2[i-y+13]=1;
//cout<<y<<' '<<i<<'\n';
bk(y+1);
R[y]=C[i]=D1[i+y]=D2[i-y+13]=0;
}
}
}else{
if(first){
for (int i=1;i<=n;i++)
fout<<S[i]<<' ';
fout<<'\n';
first=false;
}
s++;
}
}
int main(){
fin>>n;
bk(1);
fout<<s;
return 0;
}