Pagini recente » Cod sursa (job #673917) | Cod sursa (job #1098262) | Cod sursa (job #2024530) | Cod sursa (job #1385645) | Cod sursa (job #1473064)
#include <iostream>
#include <fstream>
using namespace std;
int n,Q[20][20];
int nr;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
/*bool inside(int i,int j){
return i<=n && j<=n;
}*/
/**
a11 a12 a13 a14
a21 a22 a23 a24
a31 a32 a33 a34
a41 a42 a43 a44
*/
bool ok(int i,int j){
int k=i,m=j;
while (k && m){
k--;m--;
if (Q[k][m]==1) return false;
}
k=i;m=j;
while (m){
m--;
if (Q[k][m]==1) return false;
}
k=i;m=j;
while (k<=n && m){
k++;m--;
if (Q[k][m]==1) return false;
}
return true;
}
void print(){
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (Q[i][j]==1) fout<< j <<' ';
fout<<endl;
}
void place(int k){
int i;
for (i=1;i<=n;i++){
if (ok(i,k)){
Q[i][k]=1;
if (k==n) { nr++; if (nr == 1) print();}
else place(k+1);
Q[i][k]=0;
}
}
}
int main(){
fin >> n;
place(1);
fout << nr;
return 0;
}