#include<iostream>
#include<iomanip>
using namespace std;
#define COSZ 8
#define SLSZ 15
#define QUSZ 8
#define TRUE 1
#define FLASE 0
int col[COSZ],slash[SLSZ],bslash[SLSZ];
int queen[QUSZ];
int n=0, sum=0;
void generate(void);
main()
{
int c,s;
for(c=0;c<=7;++c)
col[c]=TRUE;
for(s=0;s<=14;++s)
{
slash[s]=TRUE;
bslash[s]=TRUE;
}
cout<<"rownum: 0 1 2 3 4 5 6 7 "<<endl;
generate();
cout<<"total:"<<sum<<endl;;
return(0);
}
void generate(void)
{
int h,i;
for(h=0;h<=7;h++)
{
if(col[h]&&slash[n+h]&&bslash[n-h+7])
{
queen[n]=h;
col[h]=FLASE;
slash[n+h]=FLASE;
bslash[n-h+7]=FLASE;
n+=1;
if(n==8)
{
sum++;
cout<<setw(6)<<sum ;
for(i=0;i<=7;i++)
cout<<setw(3)<<queen[i];
cout<<endl;
}
else generate();
n--;
slash[n+h]=TRUE;
bslash[n-h+7]=TRUE;
col[h]=TRUE;
}
}
}
评论0