用伪码实现八皇后问题的递归算法
int m=0,ok=1;
int n=8;
do
{
if(ok)
if(m==n)
{
输出解;
调整;
}
else 扩展;
else 调整;
1
ok=前m个的合理性;
}
while(m!=0);
#include #define N 8 void main( ) { int n=N-1; int good=1; int m=0; int col[N]; int a[N]; int b[2*N-1]; 2 int c[2*N-1]; col[0]=0; for(int i=0;i a[i]=1; } for(i=0;i<2*N-1;i++) { b[i]=c[i]=1; } do { if(good) 3 if(m==n) { cout<<\"其中一个解答\"< for(int l=0;l cout<<\" Q \"; else cout<<\" * \"; cout<<\"\\n\"; } 4 { while(col[m]==n) { m--; a[col[m]]=b[m+col[m]]=c[m+n-col[m]]=1; } col[m]++; } else { a[col[m]]=b[m+col[m]]=c[m+n-col[m]]=0; col[++m]=1; } } 5 else { while(col[m]==n) { m--; a[col[m]]=b[m+col[m]]=c[m+n-col[m]]=1; } col[m]++; } good=a[col[m]]&&b[m+col[m]]&&c[m+n-col[m]]; }while(m!=0); } 6 因篇幅问题不能全部显示,请点此查看更多更全内容