#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int Arr[8][8] = { 0 },num=0;
int valid(int h, int v)
{
int x = 0, y = 0;
for (x = 0; x < h; x++){
for (y = 0; y < 8; y++){
if (Arr[x][y]){
if (x == h) return 0;
else if (y == v) return 0;
else if (abs(y - v) == abs(x - h)) return 0;
}
}
}
Arr[h][v] = 1;
return 1;
}
void dfs(int m)
{
int i = 0,j=0;
for (i = 0; i < 8; i++){
for (j = 0; j < 8; j++) Arr[m][j] = 0;
if (valid(m, i)){
if (m == 7) num++;
else
dfs(m + 1);
}
//Arr[m][i] = 0;
//for (j = 0; j < 8; j++) Arr[m][j] = 0;
}
}
int main()
{
dfs(0);
cout << num;
return 0;
}
八皇后问题
最新推荐文章于 2020-12-05 16:28:16 发布