n皇后 問題(原始的8皇后問題)dfs

2022-06-30 00:51:14 字數 870 閱讀 2677

題目描述

會下西洋棋的人都很清楚:皇后可以在橫、豎、斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上(有8 * 8個方格),使它們誰也不能被吃掉!這就是著名的八皇后問題。

輸入乙個整數n( 1 < = n < = 10 ) 

輸出每行輸出對應一種方案,按字典序輸出所有方案。每種方案順序輸出皇后所在的列號,相鄰兩數之間用空格隔開。如果一組可行方案都沒有,輸出「no solute!」

樣例輸入 copy

4

樣例輸出 copy

2 4 1 3

3 1 4 2

思路:我是按照元素乙個個列舉 dfs每個元素的座標 然後統計放入皇后的個數 當個數達到要求 就輸出方案

如何實現每個皇后之間不能相互攻擊 我是通過設定四個判重陣列 row,col,ud,udg,這四個陣列分別對應元素的行,列,正對角和逆對角是否有元素

1

public

class

八皇后

14static

void dfs(int x,int y,int cnt)

19if(x>n)25}

26system.out.println();27}

28return; //

棧溢位看了半天 源賴氏return放在了第二個if語句裡29}

30//

放皇后31

if(!col[y] && !row[x] && !dg[y-x+n] && !udg[y+x])

39//

不放皇后

40 dfs(x,y+1,cnt);41}

42 }

8皇后到N皇后問題

queue 八皇后問題可謂是乙個演算法中的乙個經典問題,無論是對於初學演算法的小白還是即將面試的技術人員。這個演算法我認為就是回溯搜尋 打標記,dfs比較易於理解,還有其他做法我會及時採納。import j a.util.scanner public class eightqueens 打標記 pr...

8皇后問題以至於N皇后

皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。8皇后問題一共有92組解,8皇后必定不能同一行,因此按行來依次放置皇后到不同列。對於n皇后也是如此。輸出八皇后的指定n組序列 define crt secure n...

遞迴實現n(經典的8皇后問題)皇后的問題

問題描述 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在8 8的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上,此問題進而可以推廣為n皇后的問題。解題思路 n n的矩陣,遞迴每乙個點,當皇后數量達到n的時候,進行判斷...