上代码!
#include<bits/stdc++.h>
using namespace std;
int n,mp[105][105],ans;
bool check(int x,int y){
for(int i=1;i<=n;i++){
if(mp[x][i]==1){
return false;
}
}
for(int i=1;i<=n;i++){
if(mp[i][y]==1){
return false;
}
}
for(int i=x,j=y;i>=1,j>=1;i--,j--){
if(mp[i][j]==1){
return false;
}
}
for(int i=x,j=y;i<=n,j<=n;i++,j++){
if(mp[i][j]==1){
return false;
}
}
for(int i=x,j=y;i>=1,j<=n;i--,j++){
if(mp[i][j]==1){
return false;
}
}
for(int i=x,j=y;i<=n,j>=1;i++,j--){
if(mp[i][j]==1){
return false;
}
}
}
void dfs(int s){
if(s==n&&ans<3){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(mp[i][j]==1){
cout<<j<<" ";
}
}
}
cout<<endl;
ans++;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(check(i,j)==1&&mp[i][j]==0){
mp[i][j]=1;
dfs(s+1);
}
}
}
}
int main(){
cin>>n;
dfs(0);
cout<<ans;
return 0;
}
各位大佬看一下哪里有问题?