洛谷 P1219 八皇后(深度優先搜尋)

2021-09-26 16:00:57 字數 771 閱讀 7604

題目:

標籤:深度優先搜尋

【題解】

題目條件:使得每行、每列有且只有乙個棋子,每條對角線(包括兩條主對角線的所有平行線)上至多有乙個棋子。

所以這裡用 a[150], b[150], c[150], d[150] 四個陣列來標記資訊,它們分別對應行、列、右上到左下對角線、左上到右下對角線的資訊。

技巧:對於一條從右上到左下的對角線,其上的棋子座標應滿足x+y為一定值;對於一條從左上到右下的對角線,其上的棋子座標應滿足x-y為一定值,為了避免負數的產生,**中用x-y+n來儲存數字。

ac**:

#include

using

namespace std;

//分別是行、列、右上到左下對角線、左上到右下對角線資訊。

int a[

150]

, b[

150]

, c[

150]

, d[

150]

;int n, total =0;

//n是n*n棋盤,total是解的總數

void

print_num()

//列印函式

}void

dfs(

int i)

//i是行號,下面的j是列號}}

intmain()

洛谷 P1219 八皇后

題目描述 檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 ...

洛谷 P1219 八皇后

題目描述 檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 ...

洛谷p1219 八皇后

題目描述 檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 ...