回溯:就是一个遍历决策树的过程

本文通过八皇后问题介绍回溯算法,阐述如何通过决策树进行枚举并利用剪枝提高效率。接着讨论了回溯在全排列问题中的应用,并给出LeetCode 46题全排列的示例,以及78题子集问题的解决方案,强调避免子集重复的方法。最后提供了相关参考博客链接。

请添加图片描述

从八皇后问题说起

八皇后问题是一个古老的非常有意思的问题。时间退回到1848年,国际西洋棋棋手马克斯·贝瑟尔提出了这样的一个问题

在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法。
在这里插入图片描述
此时我们就可以枚举所有的可能性,如下图为一个4皇后枚举的过程。
当然枚举的过程我们并不是想到啥就写啥,而是按照一定的规则,枚举所有的可能性。按照行和列依次递增来枚举所有的可能性。

第0行依次在第0,1,2,3列放第一个,接着放第二行。在枚举的过程中,如果我们发现目前的状态已经不符合要求时就没必要按照这种情况接着枚举了,这个技巧叫做剪枝

整个枚举的过程就如下图所示,这个树就叫决策树,演示了你枚举的整个流程。当然这个树是经过剪枝的,不然整个决策树会非常大,降低效率。
请添加图片描述
好了,我们开始枚举。记住我们需要一边枚举,一遍减枝。而不是等放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java识堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值