8皇后
vis[10] menset(vis,0,sizeof(vis)) 头文件#include<string.h>
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<set>
#include<string.h>
using namespace std;
//将这个map[][]填完
//填之前确保该位置刻意填
//a[i] 表示第i行的皇后在第几列
int vis[10],a[10],ans=0;
int ok(int n,int i){
a[n]=i;
for(int i=1;i<n;i++)
if((a[n]-a[i]==0)||abs(n-i)==abs(a[n]-a[i]))
return 0;
return 1;
}
void dfs(int n){
if(n>8){
ans++;
return;
}
for(int i=1;i<=8;i++){
if(n==1&&vis[n]==0){
a[n]=i;
vis[n]=1;
dfs(n+1);
vis[n]=0;
}
if(n!=1&&vis[n]==0){
if(ok(n,i)){
a[n]=i;
vis[n]=1;
dfs(n+1);
vis[n]=0;
}
}
}
}
int main(){
memset(vis,0,sizeof(vis));
dfs(1);
cout<<ans;
}