八皇后問題

2021-10-07 13:59:40 字數 1069 閱讀 3973

題目描述

經典的八皇后問題,在乙個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...