YTU 3013 皇后問題 遞迴

2022-07-17 08:09:13 字數 478 閱讀 5910

時間限制: 1 sec  記憶體限制: 128 mb

提交: 2  解決: 2

編寫乙個函式,求解皇后問題:在n*n的方格棋盤上,放置n個皇后,要求每個皇后不同行、不同列、不同左右對角線。

要求:1、皇后的個數由使用者輸入,其值不能超過20,輸出所有的解。

2、採用遞迴回溯的方法解決。

輸入乙個整數n,代表棋盤的大小n*n,

將計算出的彼此不受攻擊的n個皇后的所有放置方案輸出,每種方案佔一行。

4

2 4 1 3

3 1 4 2

1、規定搜尋時每行從左向右,每列從上往下搜尋!

2、盡量採用較優演算法!

3、使用遞迴求解!

#include#include#includeint n,a[20];

int check(int n)

{ int i;

for(i=0; i

八皇后問題 遞迴

問題描述 在乙個8 8西洋棋盤上,有8個皇后,每個皇后佔一格 要求皇后間不會出現相互 攻擊 的現象,即不能有兩個皇后處在同一行 同一列或同一對角線上。問共有多少種不同的方法。程式 public void testeightprince 初始化,所有的位置都可以放置乙個皇后 for int x 0 x...

n皇后問題 遞迴

遞迴回溯深度優先搜尋解決n皇后問題 用三個陣列b,c,d分別記錄棋盤上的n個列,2n 1個主對角線和2n 1個負對角線的占用情況。用i,j表示皇后所在的行列,同一主對角線上的行列下標的差一樣,若用表示式i j編號,則是 n 1 n 1,所以用表示式i j n對主對角線編號,範圍是1 2n 1 同樣的...

皇后問題 經典遞迴

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。上圖是乙個合格的皇后棋盤。如果要計算可以擺放的種數和求出擺放的情況,解決方案就是,每次按行搜尋,然後搜尋中確保...