
#include<iostream>
#include<stdlib.h>
using namespace std;
#define N 20 //最多皇后的个数
int q[N]; //存放皇后所在的列号,如(i,q[i])为皇后的一个位置
/7oid Displaysolution(int n) //输出n皇后的一个解
//{
// int static count = 0;//累计解的个数
// printf("第%d个解", ++count);
// for (int i = 1; i <= n; i++)
// {
// cout << "(" << i <<"," << q[i] << ")";
// }
// cout << endl;
//}
int count = 0;//累计解的个数
void Displaynum(int n) //解的个数
{
count++;
cout << count << endl;
}
bool place(int i, int j)//测试(i,j)位置能否摆放皇后
{
if (i == 1)
return true;
int k = 1;
while (k < i) //k=1到i-1,代表已经放过皇后的地方
{
if ((q[k] == j) || abs(q[k] - j) == abs(i - k))
return false;
k++;
}
return true;
}
void queen(int i, int n) //放置1到i的皇后
{
if (i > n)
{
Displaynum(n);
}
else
{
for (int j = 1; j <= n; j++)
{
if (place(i, j))
{
q[i] = j;
queen(i + 1, n);
}
}
}
}
int main()
{
//int n;
//cout << "请输入皇后的个数:" << endl;
//while (cin >> n)
//{
// if (n > 20)
// cout << "n值太大,无法求解" << endl;
// else
// {
// cout << "答案如下:" << endl;
// queen(1, n);
// }
//}
//return 0;
int num = 0;
int a[8][8];
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
cin >> a[i][j];
}
queen(1, 8);
}