n皇后问题(水)
#include<vector>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef pair<int,int>pii;
pii p[10];
int v[10],sum,t,cnt;
int Abs(int a){
return a>0?a:-a;
}
int judge(int st,int j){
for(int i = 0;i<st;i++){
if(Abs(p[i].first - st) == Abs(j - p[i].second)){
return 0;
}
}return 1;
}
void dfs(int st){
if(cnt == t ){
sum ++;
return;
}else{
if(st>=t){
return ;
}else{
for(int i = 0;i<t;i++){
if(!v[i] && judge(st,i)){
p[st].first = st,p[st].second = i;
cnt++;
v[i] = 1;
dfs(st+1);
cnt--;
v[i] = 0;
}
}
dfs(st+1);
}
}
}
int main()
{
cin>>t;
sum = 0,cnt = 0;
memset(v,0,sizeof(v));
dfs(0);
cout<<sum<<endl;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步