Sticks(poj1011&&蓝桥杯训练)

这个剪枝简直了,做了几次数据不强的类似的题,想都没想直接用之前的方法,疯狂超时,心态爆炸,还是看了别人代码,发现远不止我想的那么简单。
还是too young too simple


进入正题,这是一个要还原树枝的题目(题面)。我们可以理解为,把给出的所有数字序列 { S 1 , S 2 . . . S n } \{S_{1},S_{2}...S_{n}\} { S1,S2...Sn}中的数任意不重复地组合成若干个数,不限制组合成的数的个数,但要求它们都为同一个值 S U M SUM SUM,求满足要求的 S U M SUM SUM最小值。

这样没有规律的组合的情况,最方便的解法就是——DFS.
我们怎么去利用DFS,解决这个问题呢?

DFS要有明确的限制(退出条件),这道的题目的限制笼统的说就是——将所有数组合成若干个和相等的组合。但是组合的数量和组合的和的大小都未知,无法开始搜索。但是我们很显然地看出两者相关联——组合和的大小*组合数量=题目数字序列的和。最简单的就是限制组合和 S U M SUM SUM的大小,然后再去搜索。

那么就有一个思路了,遍历所有可能的组合的和( S U M SUM SUM),去搜索出一个合理的组合方式。至少存在的一个组合方式的最小的组合的和 S U M SUM

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值