#include<iostream>
#include<cmath>
using namespace std;
int x,couner,q[10000],c;
bool flag;
void Queen(int x)
{
if(x>c)
{
couner++;
if(couner<=3)
{
for(int i=1;i<=c;i++)
{
cout<<q[i]<<' ';
}
cout<<endl;
}
return;
}
for(int i=1;i<=c;i++)
{
flag=true;
for(int j=1;j<x;j++)
{
if(i==q[j])
{
flag=false;
break;
}
if(abs(i-q[j])==abs(x-j))
{
flag=false;
break;
}
}
if(flag==true)
{
q[x]=i;
Queen(x+1);
}
}
}
int main()
{
cin>>c;
Queen(1);
cout<<couner<<endl;
return 0;
}
来自一个萌新的发问,我又双叒叕的超时了,怎么避免超时呢?