acm模版
一道水題,本來不打算寫,但是發現是經典的8皇后問題的延伸,感覺挺不錯的,所以寫寫玩……想當初最開始學習 dfs 就是通過八皇后問題來學習的。
依然是逐行判斷,不過需要同時放兩個皇后才能繼續深入搜尋……
#include
#include
#include
#include
using
namespace
std;
const
int maxn = 10;
intmap[maxn][maxn];
int visb[maxn];
int visw[maxn];
int n;
int cnt = 0;
bool charge(int row, int col, int tag)
if (tag == 2 && visb[col])
if (tag == 3 && visw[col])
for (int i = 0; i < n; i++)}}
for (int i = -n + 1; i < 0; i++)}}
return
true;
}void dfs(int row)
// cout << '\n';
// }
return ;
}for (int i = 1; i <= n; i++)
}map[row][i] = 1;
visb[i] = 0;}}
}int main()
}dfs(1);
cout
<< cnt << '\n';
return
0;}
藍橋 BASIC 27 2n皇后問題
基礎練習 2n皇后問題 問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於8。輸入格式 輸入的第一行為乙個整...
藍橋杯 BASIC 27 基礎練習 2n皇后問題
問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於8。輸入格式 輸入的第一行為乙個整數n,表示棋盤的大小。接...
藍橋杯 2n皇后問題
問題描述 給定乙個n n的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入n個黑皇后和n個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n小於等於8。輸入格式 輸入的第一行為乙個整數n,表示棋盤的大小。接...