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用來儲...