#include<iostream>
using namespace std;
#define N 8
static int t = 0;
char aaa[8];
int quen[N];//N代表第N行,quen[N]代表八皇后放在第N行的列数
int counts = 0;
bool is_match(int x, int y)
{
int i;
for (i = 0; i < x ; i++)
{
if (quen[i] == y) { return 0; }
if (quen[i] + i == x + y) { return 0; }
if (i - quen[i] == x - y) { return 0; }
}
return 1;
}
void n_queen(int line)
{
if (line >= t) t = line;
if (line == N + 1)
{
counts++;
return;
}
int list = 0;
for (; list < N; list++)
{
if (is_match(line - 1, list))
{
quen[line - 1] = list;
n_queen(line + 1);
quen[line - 1] = 0;//写成line,结果编辑器把N分配的内存块是在line后面,过一会儿就是0
}
//quen[line] = 0;不用,因为如果是正确的的,回调时上面会赋值了0了,错误,就没对它动过,为啥要赋值。
}
}
int main()
{
cout << 11 << aaa[2] << 11 << endl;
n_queen(1);
cout << counts << endl << t;
}