感觉没有任何问题的代码:
#include<iostream>
using namespace std;
int a[210],ls[210],rs[210],n,ans=0;
int vis[210];
void dfs(int k)
{
if(k>n)
{
if(ans<=2)
{
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
ans++;
return ;
}
for(int i=1;i<=n;i++)
{
if(vis[i]||ls[i+k]||rs[i-k+1])
{
continue;
}
vis[i]=1;
a[k]=i;
ls[i+k]=1;
rs[i-k+1]=1;
dfs(k+1);
a[k]=0;
vis[i]=0;
ls[i+k]=0;
rs[i-k+1]=0;
}
}
int main()
{
cin>>n;
dfs(1);
cout<<ans;
return 0;
}