題目:
在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 表示皇...