[求助]请问八皇后问题如何用递归方法解决?
小弟敬请各位大虾给出详细的文字算法描述和源程序在此感谢!!!
/*下面是俺写的八皇后程序的递归版
缺陷是:既无流程图也无算法描述
*/
#include<stdio.h>
#include<math.h>
char model[]="123456789";
char solve[11]=" ";/*10个空格*/
void Queen (int);
main(){ Queen(0); }
void Queen(int n)
{
char ch,*p,*q;
int i=9-1,j;/*如果去掉“-1”就成九皇后问题*/
if(n==i)printf(solve);else
for(p=model;i>0;i--,p++)
{
q=solve; ch=*p;
if(ch=='\0')continue;
for(j=n;j>0;j--)
if(abs(*q++-ch)==j)break;
if(j>0)continue;
*q=ch;
*p=j;Queen(n+1);*p=ch;
}
}
[此贴子已经被作者于2006-6-22 7:39:58编辑过]