一个凑数的算法问题,有兴趣请进

luomingchu 2008-09-20 12:46:01
输入一个最后的得数,比如 100.5
提供的数据自行输入 ,比如 10.2 , 2.3 , 5.2, 65.2 , 85.2 , 12.3 ……

从自行输入的数据相加,不限制个数,但是要加起来等于最后的总数,前提是自行输入的数据中肯定能有数据加起来=总数100.5

现在要是实现的就是怎么遍历数据相加=最后的总数

谢谢!
...全文
943 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lit_h 2008-09-20
  • 打赏
  • 举报
回复
想了个土办法 不知道 正确不
假如得数不是很大,且小数点的位数固定为一位,
进把小数*10 变成整数。
然后 把自行输入的数据也乘10变成整数
然后开辟一个得数大小的数组a[得数],初始为0.
然后将小于得数的输入数为数组的下标将其内容变为1.
然后开始循环数组a知道得数的下标。
每当a[i]内容为1时,将i与输入的数据相加,然后将和为下标的数组a 的内容至为1
luomingchu 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sefule 的回复:]
俺看了4遍,懂了。呵呵,够难读的。
就是说,输入一堆数,再输入一个结果值count,要求从一堆数中选几个数,使得和等于输入的count。

方法有很多,俺的想法是:把所给的一堆数按由大到小排列,将其中比count大的直接删除。然后设计个类似递归应该能搞定吧。
[/Quote]


就这个意思。递归的话也挺复杂了,谁能有好的方法?
hdaocao 2008-09-20
  • 打赏
  • 举报
回复
是不是
用深度优先搜索啊
sefule 2008-09-20
  • 打赏
  • 举报
回复
俺看了4遍,懂了。呵呵,够难读的。
就是说,输入一堆数,再输入一个结果值count,要求从一堆数中选几个数,使得和等于输入的count。

方法有很多,俺的想法是:把所给的一堆数按由大到小排列,将其中比count大的直接删除。然后设计个类似递归应该能搞定吧。
swimmingfox 2008-09-20
  • 打赏
  • 举报
回复
输入数的个数少就用搜索
总和数值小就用0-1
jieao111 2008-09-20
  • 打赏
  • 举报
回复
相加不就行了
jolly_ye 2008-09-20
  • 打赏
  • 举报
回复
我的想法是:用三重循环,第一层用来计哪个开始加,第二层用来表示几个数相加,第三层就是实现相加的了,如果相加的数到了第二层的就把后面的数减了,再加。
luomingchu 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ffzhzhll 的回复:]
"现在要是实现的就是怎么遍历数据相加=最后的总数 "
是不是得找到所有的情况?
[/Quote]

只要找到一个满足的就行了
  • 打赏
  • 举报
回复
[Quote=引用楼主 luomingchu 的帖子:]
输入一个最后的得数,比如 100.5
提供的数据自行输入 ,比如 10.2 , 2.3 , 5.2, 65.2 , 85.2 , 12.3 ……

从自行输入的数据相加,不限制个数,但是要加起来等于最后的总数,前提是自行输入的数据中肯定能有数据加起来=总数100.5

现在要是实现的就是怎么遍历数据相加=最后的总数

谢谢!
[/Quote]

这不就是一个0-1背包问题吗?
将输入值作为背包容积,考察最后的结果能否填满背包.
ffzhzhll 2008-09-20
  • 打赏
  • 举报
回复
"现在要是实现的就是怎么遍历数据相加=最后的总数 "
是不是得找到所有的情况?

richbirdandy 2008-09-20
  • 打赏
  • 举报
回复
看了三遍 没看懂。。。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧