LintCode N皇后問題

2021-07-04 17:41:03 字數 1158 閱讀 1349

n皇后問題是將n個皇后放置在n*n的棋盤上,皇后彼此之間不能相互攻擊。

給定乙個整數n,返回所有不同的n皇后問題的解決方案。

每個解決方案包含乙個明確的n皇后放置布局,其中「q」和「.」分別表示乙個女王和乙個空位置。

您在真實的面試中是否遇到過這個題?

yes

樣例對於4皇后問題存在兩種解決的方案:

[[".q..", // solution 1

"...q",

"q...",

"..q."],

["..q.", // solution 2

"q...",

"...q",

".q.."]]

挑戰你能否不使用遞迴完成?

標籤expand 

相關題目

expand 

分析:非遞迴的話,那一般就是用棧來模擬遞迴。我們可以用棧來記錄當前處理到第幾排了,然後已處理的一些用乙個陣列儲存起來

**:class solution {

public:

/*** get all distinct n-queen solutions

* @param n: the number of queens

* @return: all distinct solutions

* for example, a string '...q' shows a queen on forth position

*/vector> solvenqueens(int n) {

// write your code here

vectorqueen(n,-1);

stackst;

st.push(0);

vector> ret;

while(!st.empty())

{int row = st.top();

queen[row]++;

if(queen[row]>=n)

st.pop();

else

{if(verify(queen,row))

{if(row==n-1)

{vectorv;

for(int i=0;iqueen,int row)

{for(int i=0;i<=row;i++)

{for(int j=0;j

問題 I n皇后問題

在n n 格的棋盤上放置彼此不受攻擊的n 個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於在n n格的棋盤上放置n個皇后,任何2 個皇后不放在同一行或同一列或同一斜線上。設計乙個解n 後問題的佇列式分支限界法,計算在n n個方格上放置彼此不受攻擊的n個皇...

八皇后問題 2n皇后問題

問題描述 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處在同一行 同一列或同一斜線上。解決思路 解決八皇后問題不難,主要是應用到了遞迴回溯的方法,本質上也是一種列舉法。從棋盤的第一行開始嘗試擺放第乙個皇后,擺放成功之後,遞迴一層,再遵循規則在棋盤第二行來擺放第二個皇后。如...

n皇后問題與八皇后

這裡的n皇后問題指在乙個nxn的棋盤上放置n個棋子,使得每行每列和每條對角線上都只有乙個棋子,求其擺放的方法數。當且僅當n 1 或 n 4 時問題有解。class queens vector vector res int result 0 bool test int cur for int i 0 ...