八皇后問題 遞迴解決 C語言(基礎方法)

2021-06-30 16:48:39 字數 943 閱讀 2297

/*************************

*八皇后問題:遞迴解決/c語言

*按照8層8叉樹來想象,共有8^8種可能,對應每個葉子節點;

*由根到葉子,自左至右遍歷每種情況;

*剪枝掉不可行的方案;

*及時輸出可行方案,繼續遍歷;

*其間並未對每種可行方案累計儲存;

*所有呼叫的遞迴完成返回後,程式結束。

********************

*author: joy/王曉雪

*date: 04/11/2015 19:51 sat.

**************************/

#include #include #define n 8

int column[n+1]; //標記每列是否有queen,有為1,無為0.

int right_up[n*2]; //從右上到左下方向的對角線/,(i,j)在第(i+j-1)列.

int left_up[n*2]; //從左上到右下方向的對角線\,(i,j)在第(n-j+i)列.

int queen[n+1]; //記錄每行queen所在的列號.

int cnt; //表示第cnt個解決方案.

void init(); //初始化陣列及變數

void backtract( int i ); //回朔遞迴求解,i定位第i行的queen.

void showanswer(); //列印輸出當前儲存的解決方案

int main()

void init()

void backtract( int i )

} }else //n個queen均已放置好,列印輸出此種解決方案 }

void showanswer()

else

}printf("\n");

}}

遞迴 八皇后問題 C語言

統計一共有幾種 intnotdanger int row,int j,int chess 8 判斷左上方 for i row,k j i 0 k 0 i k 判斷右下方 for i row,k j i 8 k 8 i k 判斷右上方 for i row,k j i 0 k 8 i k 左下方 for...

C語言解決八皇后問題

八皇后問題是這樣乙個問題 將八個皇后擺在一張8 8的西洋棋棋盤上,使每個皇后都無法吃掉別的皇后,即 每一行,每一列,每一條對角線只有乙個皇后,一共有多少種擺法?演算法思想 首先逐行遍歷,設定queen max 陣列記錄縱座標 max為格仔數8 每次落子前判斷座標 i,queen i 是否滿足條件,用...

八皇后問題 C 遞迴

最近在重新看遞迴,準備複試,剛好看到八皇后問題。遇到的問題主要有兩大方面 1.迴圈實現放皇后對相應方格的置1操作,要注意迴圈條件,考慮4種情況。2.遞迴中的迴圈邏輯。見 注釋。另外,由於進入遞迴起始的位置是給定的 0,0 需要在主函式內迴圈實現對第0行所有位置的遞迴求解。這一點也是看了好久,通過遞迴...