【八皇后回溯算法图解】

JavaScript示例程序(参考百度百科):

function queen(a, cur) {

    if (cur==a.length) { console.log(a); return; }

    for (var i = 0; i < a.length; i++) {

        a[cur] = i;

        var flag = true;

        for (var j = 0; j < cur; j++) {

            var ab = i - a[j];

            if (a[j]==i||(ab>0?ab:-ab)==cur-j) { flag=false; break };
        };

        if (flag) { queen(a,cur+1); }

    };

};

queen([1,1,1,1,1,1,1,1],0); // 输出92种不同解

可以想象成一个小孩走进了八皇后布置的8*8格迷宫内,只有按照指定的规则路径才能打开下一扇门。每次都是从第一通道走到最后一通道,要么成功返回,要么走到最后的死胡同(没找到有效解)再返回,只能一层一层返回上一通道的入口处继续探寻下一入口再次尝试。

结合想象 ,可以更形象的理解回溯算法的含义。

上面JS程序输出的第一种可行解的回溯示例图:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值