八皇后 dfs 洛谷P1219

2021-10-03 13:52:16 字數 553 閱讀 6064

p1219 [usaco1.5]八皇后 checker challenge

題意:n×n的棋盤,放置n個皇后,使其不會互相攻擊。同行、同列、同對角線會相互攻擊。按字典序輸出前三個,第四行輸出一共有多少種放法。

做法:陣列a[i]存放第i行的皇后放在哪一列,遞迴列舉全排列。列舉過程中判合法(可行性剪枝),判斷左上、正上、右上是否有衝突,若是,回溯到父親節點。

**:

//手動開o2優化

#pragma gcc optimize(2)

#include#includeusing namespace std;

int cnt;//計數

bool check(int a,int n,int cur,int pos)

return true;

}//1-n的全排列 存放在a[0:n-1]

void permutation(int a,int cur,int n)

else

for(int i=1;i<=n;i++) }

int main()

洛谷P1219 八皇后 dfs

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

洛谷 P1219 八皇后 DFS

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

洛谷 P1219 八皇后

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