DFS例题——小猫爬山

题目讲解

题目链接:P10483 小猫爬山 - 洛谷

思路讲解

算法原理

【解法】
搜索策略:依次处理每⼀只猫,对于每⼀只猫,我们都有两种处理⽅式:
要么把这只猫放在已经租好的缆⻋上;
要么重新租⼀个缆⻋,把这只猫放上去。
剪枝:
在搜索过程中,我们⽤全局变量记录已经搜索出来的最⼩缆⻋数量。如果当前搜索过程中,已经⽤
的缆⻋数量⼤于全局记录的最⼩缆⻋数量,那么这个分⽀⼀定不会得到最优解,剪掉。
优化枚举顺序⼀:从⼤到⼩安排每⼀只猫
重量较⼤的猫能够快速把缆⻋填满,较快得到⼀个最⼩值;
通过这个最⼩值,能够提前把分⽀较⼤的情况提前剪掉。
优化枚举策略⼆:先考虑把⼩猫放在已有的缆⻋上,然后考虑重新租⼀辆⻋
因为如果反着来,我们会先把缆⻋较⼤的情况枚举出来,这样就起不到剪枝的作用了。

参考代码

代码链接:DFS/小猫爬山 · 陈佳栋/o.O.c - 码云 - 开源中国

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值