題目描述
經典的八皇后問題,在乙個8*8的棋盤上放置8個皇后,使得不能互相攻擊到,皇后的攻擊範圍的同一行,同一列以及同乙個斜線。要求輸出所有不會互相攻擊到的擺放方式,所有通過旋轉,對稱都方式得到的擺放方式均認為是不同的擺放方式。棋盤被編號為0-7行,0-7列。
輸入
無輸入。
輸出
每行乙個數字代表擺放方式,如01234567代表從第0行放在0列,第1行放在1列,
第2行放在2列,按照公升序輸出。
樣例輸入無
樣例輸出
04752613
05726314
06357142
06471352
…只給出部分輸出…都給了可以直接拷貝了…
**:
#include
using
namespace std;
const
int m =8;
const
int n =20;
deque<
int> q;
bool a[m]
, b[n]
, c[n]
;//列,\對角線,/對角線
void
dfs(
int start,
int end)
a[j]
= b[start + j +1]
= c[j - start +7]
=false
;dfs
(start +
1, end)
; a[j]
= b[start + j +1]
= c[j - start +7]
=true
; q.
pop_back()
;}}}
intmain()
八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...
八皇后問題
include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...
八皇后問題
package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...