Pagini recente » Cod sursa (job #333571) | Cod sursa (job #617531) | Cod sursa (job #1326718)
#include <fstream>
using namespace std;
ifstream fin ("damesah.in" );
ofstream fout("damesah.out");
int n, m, i, j, k, ok, minim, maxim;
int a[15][15], ok4, nr;
void sol(){
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= n; j ++)
if(a[i][j] == 1)
fout << j << " ";
fout << "\n";
return;
}
void back(int k){
if(k == n + 1){
if(ok4 == 0){
sol(); ok4 = 1;
}
nr ++;
}
else
for(int i = 1; i <= n; i ++){
a[k][i] = 1;
int k1, k2, ok3 = 1;
int ok1 = 1, ok2 = 1;
//======================================================
k1 = k - 1; k2 = i - 1;
while(a[k1][k2] == 0 && k1 >= 1 && k2 >= 1){
k1 --; k2 --;
}
if(k1 >= 1 && k2 >= 1)
ok1 = 0;
//======================================================
k1 = k - 1;
while(a[k1][i] == 0 && k1 >= 1)
k1 --;
if(k1 != 0)
ok2 = 0;
//======================================================
k1 = k - 1; k2 = i + 1;
while(a[k1][k2] == 0 && k1 >= 1 && k2 <= n){
k1 --; k2 ++;
}
if(k1 >= 1 && k2 <= n)
ok3 = 0;
//======================================================
if(ok1 == 1 && ok2 == 1 && ok3 == 1)
back(k + 1);
a[k][i] = 0;
}
return;
}
int main(){
fin >> n;
back(1);
fout << nr;
return 0;
}