- baixianyi 的博客
2026暑 梦熊集训 BFS&DFS代码
- @ 2026-8-3 9:33:16
八皇后
#include<bits/stdc++.h>
using namespace std;
int n,t;
int a[15];
bool vc[15],vd1[30],vd2[30];
void dfs(int x){
if(x==n+1){
if(t<3){
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
t++;
return ;
}else{
for(int i=1;i<=n;i++){
if(vc[i]==0&&vd1[x+i]==0&&vd2[x-i+n]==0){
a[x]=i;
vc[i]=1;
vd1[x+i]=1;
vd2[x-i+n]=1;
dfs(x+1);
vc[i]=0;
vd1[x+i]=0;
vd2[x-i+n]=0;
}
}
}
}
int main(){
cin>>n;
dfs(1);
cout<<t;
return 0;
}
组合的输出
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[25];
void dfs(int x,int k){
if(k==m){
for(int i=1;i<=m;i++){
cout<<setw(3)<<a[i];
}
cout<<endl;
return ;
}else{
for(int i=x+1;i<=n;i++){
a[k+1]=i;
dfs(i,k+1);
}
}
}
int main(){
cin>>n>>m;
dfs(0,0);
return 0;
}