八皇后-遞歸算法

這一章繼續寫八皇后問題---遞歸算法


爲什麼要採用遞歸算法---編寫簡單,而且容易思考。


八皇后遞歸算法,首先考慮一個“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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章