java實現N皇后問題

2021-06-11 09:03:11 字數 1225 閱讀 8593

n皇后問題描述:

將 n 個皇后擺放在乙個 n x n 的棋盤上,使得每乙個皇后都無法攻擊到其他皇后。

深度優先遍歷的典型案例。

程式輸入:

n的個數(需》4)

棋盤上任意乙個位置

程式輸出:

滿足問題需求的棋盤座標

程式**如下:

node類用於封裝皇后的棋盤位置資訊

public class node 

public int getx()

public void setx(int x)

public int gety()

public void sety(int y)

@override

public string tostring()

@override

public int hashcode()

@override

public boolean equals(object obj)

}

searcher類用於查詢指定起始位置的n皇后座標

public class searcher 

public listsearch(node node)else

} /**

* 先序遍歷

*/private boolean qualified(node node,listsolution)

solution.add(node);

if(solution.size()==num)

//獲取node的子節點

boolean res=false;

for(node child:obtainchild(node))

} if(!res)

return res;

} private listobtainchild(node node)

for(node tempnode:nodes)

} return false;

}}

main類用於編碼測試

public class main 

}

列印輸出:[(2,0), (0,4), (1,2), (3,5), (4,3), (5,1)]

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

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

遞迴實現N皇后問題

因為每行只能放置乙個皇后,故可用一維陣列a儲存 第i行皇后的列數,即 a i j 表示第i行的皇后位於第j列。為方便起見,下標全部從1開始。它可以實時表示擺放的狀態。遞迴函式 queen i 可理解為 我們已經無衝突的擺放好了前 i 1 行的皇后並在陣列a中儲存,現在開始擺放第i行的皇后。對於第i行...

python實現N皇后問題

首先,n皇后是乙個非常經典的遞迴 回溯的問題。然後,寫乙個判斷函式check來判斷某個點是不是可以放置的點是該演算法的重點 check函式,用來判斷點 row,col 是否可以放置皇后 defcheck board,row,col for i in range row 上文已經指出,board用來儲...