八皇后問題(遞迴做法和回溯做法)

2021-10-10 15:18:43 字數 1229 閱讀 2619

八皇后問題回溯做法要比遞迴做法簡單一些,但這個問題能很好地訓練我們的遞迴演算法。下面把兩種方法的**列出來。

遞迴做法:

#include

using

namespace std;

int cnt=0;

// 總共多少種情況

intnotdanger

(int r,

int c,

int chess[

8])// 穿進去需要判斷點的座標和chess2

}// 判斷左上方

for(

int i=r,j=c;i>=

0&&j>=

0;i--

,j--)}

// 判斷右下方

for(

int i=r,j=c;i<

8&&j<

8;i++

,j++)}

//判斷右上方

for(

int i=r,j=c;i>=

0&&j<

8;i--

,j++)}

// 判斷左下方

for(

int i=r,j=c;i<

8&&j>=

0;i++

,j--)}

return1;

}// r表示行,c表示列

void

eightqueen

(int r,

int c,

int chess[

8])}

if(r==8)

cout<} cout

else

chess2[r]

[i]=1;

eightqueen

(r+1

,c,chess2);}

}}}int

main()

回溯做法:

#include

using

namespace std;

int sum=

0,a[13]

,n;int

find

(int t)

return1;

}void

back

(int t)

}int

main()

return0;

}

N皇后問題(回溯做法)

相信大家都聽過經典的 八皇后 問題吧?這個遊戲要求在乙個8 8的棋盤上放置8個皇后,使8個皇后互相不攻擊 攻擊的含義是有兩個皇后在同一行或同一列或同一對角線上 桐桐對這個遊戲很感興趣,也很快解決了這個問題。可是,他想為自己增加一點難度,於是他想求出n皇后的解的情況。你能幫助她嗎?輸入格式 一行,僅有...

回溯 八皇后問題(遞迴和非遞迴)

8皇后問題 如何在 8 x 8 的西洋棋棋盤上安排 8個皇后,使得沒有兩個皇后能互相攻擊?如果兩個皇后處在同一行 同一列或同一條對角線上,則她們能互相攻擊。解向量為長度為8 的陣列,記為 solution 因為共有 8個皇后,而棋盤剛好為 8 8,所以每一行肯定會有乙個皇后,那麼我們約定 solut...

八皇后問題的遞迴和回溯問題

在8 8的西洋棋上擺放八個皇后,使其不能相互攻擊,即任意兩個皇后不得處在同一行 同一列或者同一對角斜線上。下圖中的每個黑色格仔表示乙個皇后,這就是一種符合條件的擺放方法。請求出總共有多少種擺法。此題用到了遞迴和回溯 include int val 10 10 int count 0 方法數 bool...