以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求和问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=153596) |
-- 作者:keli0917 -- 发布时间:2020/8/16 18:31:00 -- 求和问题 比如报关单出口,第一出口数量是1000件。第2次出口数量是600件。 工厂第一次销售开的发票可能是,100+200+300+400,100+200+700,也可能是600+400,也可能是直接1000件,等等各种可能组合。 工厂第二次销售开的发票可能是,100+500,200+400,300+300等各种可能。 现在假设第一次开的发票数量组合是100+200+700,第二次开的发票数量组合是200+400,两次开票共有5个数据。 现在我需要编程,从5个数据中找出等于1000的其中一个组合(也就是从N个数据中找出等于1000的其中一个组合,并且对每一个数据标记)
我找到一个算法,但是看不明白。供参考。
非递归做法。 比如数组中有10个数字 比如{-10,45,35,99,10,6,9,20,17,18} , sum为35,用二进制的0000000000~1111111111代表某个数字是否被选中,如果数字是0101010101代表45,99,6,20,18五个数字被选出来了。接着我们只需要计算着五个数是否等于我们要最终需要sum。代码如下:
|
-- 作者:有点蓝 -- 发布时间:2020/8/16 20:52:00 -- 这代码好像是C++的,我也看不太懂。大概好像可能是遍历所有的组合,然后求和判断,就是把所有的可能性结果都求出来: 比如先计算2个数字的组合:-10+45、-10+35、-10+99、.... 接着计算3个数字的组合:-10+45+35、-10+45+99、.... 然后是4个数字、5个数字,...,计算完毕标记符合要求的组合
|
-- 作者:keli0917 -- 发布时间:2020/8/16 20:59:00 -- Dim num2 As Byte [此贴子已经被作者于2020/8/16 21:01:07编辑过]
|
-- 作者:keli0917 -- 发布时间:2020/8/16 21:03:00 -- 我的算法有问题啊,,,,哎。求高手帮忙。其实就是找到等于1000的几个数字所在的行,然后标记上序号。 |
-- 作者:有点蓝 -- 发布时间:2020/8/16 21:34:00 -- 请上传实例测试 |