N後互不攻殺問題

2021-05-24 21:26:14 字數 908 閱讀 3677

題目:

在n * n的西洋棋盤上放置n個皇后,使它們彼

此互相不攻殺。皇后攻殺條件:處於同一行,或同一

列,或同一斜線的皇后彼此攻殺。試給出全部方案。

我發現我和老師的思想老師不在乙個方向。

上次的和質問題,我把**都寫在main()函式裡面,接過來時寫了很多函式。這次的n後問題,我寫了很多函式,老師卻都寫在main()裡面了。

下面是我寫的:

【資料結構】

work 其實是代表的每一行,work[n] 中的n代表的是行號,那麼coloum肯定就是列號了。

如圖:

0

1

2

3

4

0

▲    □

1

▲□ 2

□ ▲

3

▲ □

4

□▲ ▲:一種可能性

□:另一種可能性

側邊欄代表行,即a[n]中的n代表的那個。

上邊欄表示列,即a[i].coloum,這個值是要從selectnum()函式中選擇的。

此程式的其他地方跟上個程式(質和問題)是類似的,大家可以參考:

這兩個問題同屬於回溯的問題

下面是老師的程式

回溯之n後問題

n後問題 在 n n格的棋盤上放置彼此不受攻擊的 n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於在 n n格的棋盤上放置 n個皇后,任何 2個皇后不放在同一行或同一列或同一斜線上。解向量 x1,x2,xn 顯約束 xi 1,2,n 隱約束 1 不同列...

n後問題 回溯法

一.問題描述 在n n格仔上放置n個皇后,按照西洋棋規矩不可讓皇后相互攻擊,即如何兩個皇后不放在同一列同一行同一斜線上.二.演算法設計 將問題轉化為逐行放置皇后,即第一次放第1行,第二次放第2行,依次類推放至第n行皇后則放置完畢,如此每次放置只需考慮皇后的列衝突和斜線衝突.因為每次皇后都在新的一行放...

回溯法 n後問題

n後問題 1.問題描述 在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一斜線上的棋子。n後問題等價於在n n格的棋盤上放置n個皇后,任何2個皇后不放在同一行或同一列或同一斜線上。2.演算法設計 用n元組x 1 n 表示n後問題的解。其中,x i 表示皇...