八皇后问题(P1219)
源代码如下
#include <iostream>
using namespace std;
int n , ans = 0;
int b1[1000] , b2[1000] , b3[1000];
int a[10000];
void dfs(int x){
if(x > n){
ans ++;
if(ans <= 3){
for(int i = 1 ; i <= n ; i ++){
cout << a[i] << " ";
}
cout << endl;
}
return;
}
for(int i = 1 ; i <= n ; i ++){
if(b1[i] == 0 && b2[x + i] == 0 && b3[x - i + 15] == 0){
a[x] = i;
b1[i] = 1; b2[x + i] = 1; b3[x - i + 15] = 1;
dfs(x + 1);
b1[i] = 0; b2[x + i] = 0; b3[x - i + 15] = 0;
}
}
}
int main(){
cin >> n;
dfs(1);
cout << ans;
return 0;
}
本题解法:深度优先搜索
题解最后,还请大家一键三连哦