這一章繼續寫八皇后問題---遞歸算法
爲什麼要採用遞歸算法---編寫簡單,而且容易思考。
八皇后遞歸算法,首先考慮一個“0”節點,在該節點處的皇后爲“0”個,然後通過定義的N(皇后)進行判斷。
#include <iostream>
using namespace std;
int queen[255] = {0};
int N = 8;
void eightQueen(int n)
{
//達到最後的一個皇后,我們需要對結果進行輸出
if(n == N){
for(int i = 0; i < N; i++){
cout << queen[i]+1 << " ";
}
cout << endl;
return;
}
// 判斷皇后是不是可以進行下一步計算
for(int i = 0; i < N; i++){
queen[n] = i;
int j = 0;
for(j = 0; j < n; j++){
if(queen[j] == queen[n] || abs(queen[n]-queen[j]) == abs(n-j)){
break;
}
}
// 皇后個數沒有達到要求
if(n == j){
eightQueen(n+1);
}
}
}
int main(void)
{
eightQueen(0);
return 0;
}