八皇后問題(遞迴實現)

2021-07-27 05:52:09 字數 837 閱讀 5427

八皇后問題,是乙個古老而著名的問題,是回溯

的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8x8格的西洋棋

上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 

這裡用遞迴演算法實現,因為遞迴在某個層面上就實現了回溯,再演算法中,構造8x8的陣列,初始全部為0,一行一行的進行判斷,當某一行沒有危險,遞迴呼叫該函式。下面給出**。

#includeint count;

int nodanger(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(i=row,k=j;i<8&&k>=0;i++,k--) }

if(flag1||flag2||flag3||flag4||flag5)

return 0;

else

return 1;

}void eightqueen(int row,int n,int (*chess)[8])

printf("\n");

}printf("\n");

count++;

} //這個程式的精華就在下面這else後面幾行**

else

{ for(j=0;j

八皇后問題(遞迴實現)

八皇后問題是回溯法的典型例題,就同一問題有許多不同種解法,這裡只通過遞迴解決八皇后問題 所謂八皇后問題是由高斯先生提出的乙個關於西洋棋的數學問題,其要求在8x8的棋盤上放置8個皇后,每個皇后之間不能互相攻擊到對方 皇后的攻擊方式是公尺字型 高斯先生窮其一生發現了76鐘解法,在沒有計算機的年代已經非常...

八皇后 N皇后問題 遞迴實現

八皇后問題,即在乙個棋盤上,每行都可以放置乙個皇后,但每個皇后都不能影響其他皇后的安全,即所有皇后的位置不能在同一直線上 解決問題方法及思想 遞迴 在使用遞迴之前首先要準備好兩個函式實現 1.判斷此時此刻位置是否安全 只需要判斷元素上方,左上方,右上方是否安全,且只要有乙個位置不安全,則結束判斷 2...

八皇后問題遞迴實現(C )

八皇后的遞迴實現,執行程式後,平台只能顯示少部分解,在此,為了方便解集合的檢視,將解集儲存在了 f result.txt 檔案中。實現 如下 include include include using namespace std define n 8 define solu size 100 str...