这是我第一次写技术博客,由于水平有限写的不好。先把代码写上。
#include<iostream>
using namespace std;
int static qu[9][9],a[9],b[16],c[16],sum=0;
int main()
{ int i,j;
for(i=0;i<9;i++)
a[i]=0;
for(i=0;i<16;i++)
b[i]=c[i]=0;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
qu[i][j]=0;
void quen(int x);
quen(1);
return 0;
}
void quen(int x)
{ int i,j,k;
for(i=1;i<9;i++)
{
if(a[i]==0&&b[i-x+8]==0&&c[x+i-1]==0)
{
qu[x][i]=5;
a[i]=1;
b[i-x+8]=1;
c[x+i-1]=1;
if(x<8)
quen(x+1);
else
{
sum=sum+1;
cout<<"these are"<<sum<<endl;
for(k=1;k<9;k++)
{for(j=1;j<9;j++)
cout<<qu[k][j]<<" ";
cout<<endl;
}
cout<<endl<<endl;
}
a[i]=0;
b[i-x+8]=0;
c[x+i-1]=0;
qu[x][i]=0;
}
}
}
八皇后问题是一个很经典低调题,他用到了递归,递归是很重要的,但往往掌握不好。这个程序中也巧妙的用了数组来处理对角线问题,这很值得学习。这个程序是我参考后写出的。希望不久的将来不用参考就写出这样好的程序来,与君共勉。