八皇后問題回溯做法要比遞迴做法簡單一些,但這個問題能很好地訓練我們的遞迴演算法。下面把兩種方法的**列出來。
遞迴做法:
#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...