ytking123 2014-10-06 03:54
浏览 651

八皇后问题在线等解答

#include
#include
int place(int k,int x[])
{
int i=0;
for(i=1;i if(fabs(k-i)==fabs(x[i]-x[k])||x[i]==x[k])return 0;
return 1;
}
void backstrack(int t,int n,int x[],int *sum)
{
int i;
if(t>n)(*sum)++;
else for(i=1;i<=n;i++)
{
x[t]=i;
if(place(t,x))backstrack(t+1,n,x,sum);
}
}
int main()
{
int i,sum=0,x[100],n=8;
for(i=0;i<=n;i++)
x[i]=0;
backstrack(1,n,x,&sum);
printf("%d\n",sum);
return 0;
}
想知道具体是怎么回溯的,尤其是t>n之后程序是怎么继续的额

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥35 平滑拟合曲线该如何生成
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 自己瞎改改,结果现在又运行不了了
    • ¥15 链式存储应该如何解决
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站