Novaorbit @ 2024-03-13 20:24:12
代码如下:
#include<iostream>
using namespace std;
int n,ztag[21][21],ans,zrec[11];
void find(int x,int y)
{
if(x==n-1)
{
++ans;
if(ans<4)
{
for(int i=0;i<x;++i) cout<<zrec[i]+1<<" ";
cout<<y+1<<endl;
}
return;
}
zrec[x]=y;
for(int i=x;i<n;++i) ++ztag[i][y];
for(int i=x+1,j=y+1;i<n&&j<n;++i,++j) ++ztag[i][j];
for(int i=x+1,j=y-1;i<n&&j>=0;++i,--j) ++ztag[i][j];
for(int i=0;i<n;++i) if(!ztag[x+1][i]) find(x+1,i);
for(int i=x;i<n;++i) --ztag[i][y];
for(int i=x+1,j=y+1;i<n&&j<n;++i,++j) --ztag[i][j];
for(int i=x+1,j=y-1;i<n&&j>=0;++i,--j) --ztag[i][j];
return;
}
int main()
{
cin>>n;
for(int i=0;i<n;++i) find(0,i);
cout<<ans<<endl;
// system("pause");
return 0;
}
by _yukinoshita_yukino @ 2024-04-25 20:42:00
多谢了哥们
by AnnaQ @ 2024-05-17 12:11:53
你的代码可能UB