八皇后问题
八皇后问题
8*8的棋盘上摆放8个皇后,求所有方案。通过深度优先搜索的思想对八皇后问题的布局问题问题进行解决….DFS
C++实现
#include<iostream>
using namespace std;
int a[8] = {0};
int sumNum = 0;
void DFS(int i){
if(i == 8) {
//for(int i=0; i<8; i++) printf("%d ", a[i]);
//printf("\n");
sumNum = sumNum + 1;
return;
}
//(i, j) 坐标满足条件
for(int j = 0; j < 8; j++) {
bool flag = true;
// check 选项 全部满足条件
for(int k = 0; k < i; k++) {
if( j == a[k] || i - k == j - a[k] || i - k == a[k] - j ) {
flag = false;
}
}
if(flag) {
a[i] = j;
DFS(i + 1);
}
}
}
int main() {
DFS(0);
printf("%d\n", sumNum);
return 0;
}