Pagini recente » Cod sursa (job #1690573) | Cod sursa (job #1019619) | Cod sursa (job #899689) | Cod sursa (job #3176377) | Cod sursa (job #2210978)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n,s=0;
bool first=true;
bool A[14][14],C[14],R[14];
bool diag(int x,int y){
int d1 = x + y;
int d2 = abs(x-y);
for(int i=1;i<=n;i++){
if ((x>y && A[i][i+d2])||(x<y && A[i+d2][i])||(x==y && A[i][i]) || A[i][d1-i]) return 1;
}
}
void bk(int y){
if(y<=n){
for(int i=1;i<=n;i++){
if(!C[i]&&!R[y]&&!diag(i,y)){
A[y][i]=C[i]=R[y]=1;
bk(y+1);
A[y][i]=C[i]=R[y]=0;
}
}
}else{
if(first){
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if(A[i][j])
fout<<j<<' ';
fout<<'\n';
first=false;
}
s++;
}
}
int main(){
fin>>n;
bk(1);
fout<<s;
return 0;
}