AcWing 1432. 棋盘挑战
原题链接
中等
作者:
一抹斜阳
,
2021-01-22 14:24:06
,
所有人可见
,
阅读 385
AcWing 843. n-皇后问题题解
和之前做的n皇后一样的思路
#include <iostream>
using namespace std;
int n;
const int N = 15;
int x[N];
bool column[N];
bool d[N * 2], ud[N * 2];
int res;
void dfs(int k);
int main(){
cin>>n;
dfs(0);
cout<<res<<endl;
return 0;
}
void dfs(int k){
if(k == n){
res++;
if(res <= 3){
for(int i = 0;i < n;i++)
cout<<x[i]<<" ";
cout<<endl;
}
return;
}
for(int i = 0;i < n;i++){
if(!column[i] && !d[i - k + n - 1] && !ud[i + k]){
x[k] = i + 1;
column[i] = true;
d[i - k + n - 1] = true;
ud[i + k] = true;
dfs(k + 1);
ud[i + k] = false;
d[i - k + n - 1] = false;
column[i] = false;
}
}
}