8*8为什么normalize为8~13,方案都为92种,但是normalize14的话方案却有82种?
#include <iostream>
using namespace std;
const int Normalize=9;
int Num=0;
int Queen[9];
bool C[9];
bool L[17];
bool R[17];
void check(int i)
{
int j;
int k;
for (j=1;j<=8;j++)
{
if ((C[j]==true)&&(R[i+j]==true)&&(L[i-j+Normalize]==true))
{
Queen[i]=j;
C[j]=false;
L[i-j+Normalize]=false;
R[i+j]=false;
if(i<8){
check(i+1);
}
else{
Num++;
cout<<"方案"<<Num<<":"<<"\t";
for (k=1;k<=8;k++)
cout <<k<<"行"<<Queen[k]<<"列"<<"\t";
cout<<endl;
}
C[j]=true;
L[i-j+Normalize]=true;
R[i+j]=true;
}
}
}
int main (){
int i;
Num=0;
for (i=1;i<9;i++)
C[i]=true;
for (i=0;i<17;i++)
L[i]=R[i]=true;
check(1);
return 0;
}