简述N皇后问题的方法,适合大家查看!
void make(int l) //递归搜索以stack[l]为初结点的所有路径
{
int i,j; //子结点个数
if (l==n+1)
{
total=total+1; //路径数+1
for(i=1;i<=n;i++)
printf("%-3d",stack[i]); //输出第i行皇后的列位置stack[i]
printf("\n");
exit; //回溯(若试题仅要求一条路径,则exit改为halt即可)
}
for (i=1;i<=n;i++)
{
stack[l]=i; //算符i作用于生成stack[l-1]产生子状态stack[l];
if (!att(l,i)) make(l+1);
} //再无算符可用,回溯
}