顺带说一句,那个415263是啥?不是只有行和列吗???
以下是代码
#include<bits/stdc++.h>
int size;
using namespace std;
int q[10];
int sum=0;
int ans_hang[10000],ans_lie[10000];
void solve(int n, int i,short time)
{
if(i>=size)
{
sum++;
for(int j=0;j<n;j++)
{
ans_hang[j]=j+1;ans_lie[j]=q[j]+1;
}
if(time<=3)
{
for(int n=0;n<size;n++)
{
cout<<ans_hang[n];if(n!=size-1) cout<<ends;
}
printf("\n");
for(int n=0;n<size;n++)
{
cout<<ans_lie[n];if(n!=size-1) cout<<ends;
}
cout<<endl;
}
return ;
}
bool ok[size];
memset(ok,false,sizeof(ok));
for(int j=0;j<i;j++)
{
int x=q[j];
ok[x]=true;
int k=i-j;
if(k<0) k=-k;
if(x-k>=0) ok[x-k]=true;
if(x+k<size) ok[x+k]=true;
}
for(int j=0;j<n;j++)
{
if(ok[j])
continue;
q[i]=j;
solve(n,i+1,time+1);
}
}
int main()
{
memset(q,0,sizeof(q));
cin>>size;
solve(size,0,1);
cout<<sum;
return 0;
}