程序分析:在8*8的棋盘上安置八个皇后且相互不能攻击。
一个皇后的攻击范围如下图所示:
其中一种摆法如下:
C++代码:
方法一:
#include <iostream>
using namespace std;
const int ArSize = 8;//这个数等于几,就是几皇后。
int num = 0;
bool check(bool arr[ArSize][ArSize], int row, int column){
// 判断皇后的落点是否合规
if (row == 0){
return true;
}
int i, j;
for (i = 0; i < row; ++i){
// 判断纵向是否有冲突
if (arr[i][column]){
return false;
}
}
i = row - 1;
j = column - 1;
while (i >= 0 && j >= 0){
// 判断正斜对角线是否有冲突
if (arr[i][j]){
return false;
}
--i;
--j;
}
i = row - 1;
j = column + 1;
while (i >= 0 && j <= ArSize - 1){
// 判断负斜对角线是否有冲突
if (arr[i][j]){
return false;
}
--i;
++j;
}
return true;
}
void outPut(bool arr[Ar