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 ...