【思路整理】凑数问题

环境:VB,重点是整理思路。
零、序
0.在ExcelHome上遇到很多凑数的贴子,粗略看过香川的代码,用的递归,看不懂,一直觉得这个比较难。春节无事,尝试挑战。
1.研习香川的贴子,花了很长时间,贴子里的解释不多,很费劲,主要是递归绕来绕去就绕晕了,最后发觉根本看不懂,放弃。
2.咨询老同学,点名这东西属于“背包问题”的简化版。
3.网上找了些背包的贴子,绝大多数都只有代码,关于解题思路说的太少,难以理解代码形成的过程。唯一一个有思路的贴子,用的全是数学符号,还是看不懂。
4.心得:看别人的代码比自己写代码还难。
5.不再看别人写的,打算自己硬编。
一、题型
有100张金额不等的发票,期望找到金额为1000元的各张发票的组合。
二、思路
(一)将发票按金额将序排列。
(二)简化问题:只找能够与第一张发票凑成1000的其他发票。
1st.FatherArr=发票集合,包含编号和金额;通过循环,使Arr=小于1000元的发票集合。
2nd.循环Arr,从第一张开始往下加:
    1.如果金额小于1000,说明有希望凑成1000,将发票编号记录到临时变量(如ID),金额合计记录到临时变量(如Sum),然后接着加下一个。
    2.如果金额等于1000,达成期望,把ID记录到结果数组(如Answer),搞定!
    3.如果金额大于1000,失败,说明最后一次把数加冒了。
      由于发票是降序排列,后面没准有可以能够与加冒之前凑成1000的票,但是怎么弄?
      按照以上思路再循环一次!
      只不过这次目标值变成1000-Sum,Arr是小于1000-Sum的发票集合。
            3.1.如果金额小于1000-Sum,说明有希望凑成1
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值