ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 香川群子

[原创] 2014新年元旦第一强帖:实用凑数凑金额高效递归剪枝算法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-19 22:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:递归
感谢分享   
有时间的话请帮忙看下   7个数据求和600  或者接近600(范围590 ~ 610)
谢谢

textx.rar

7.54 KB, 下载次数: 101

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-19 23:28 | 显示全部楼层
Mithril秘银 发表于 2016-1-19 22:07
感谢分享   
有时间的话请帮忙看下   7个数据求和600  或者接近600(范围590 ~ 610)
谢谢

h        n        f1
590        2        +50*4+65*6
590        2        +50*10+90*1
590        3        +50*3+65*4+90*2
590        3        +50*2+65*2+90*4
590        2        +50*1+90*6
590        4        +50*4+65*3+90*1+105*1
590        4        +50*3+65*1+90*3+105*1
590        3        +50*5+65*2+105*2
590        3        +50*4+90*2+105*2
590        2        +65*1+105*5
590        3        +50*3+65*5+115*1
590        4        +50*2+65*3+90*2+115*1
590        4        +50*1+65*1+90*4+115*1
590        5        +50*3+65*2+90*1+105*1+115*1
590        4        +50*2+90*3+105*1+115*1
590        4        +50*4+65*1+105*2+115*1
590        3        +50*2+65*4+115*2
590        4        +50*1+65*2+90*2+115*2
590        2        +90*4+115*2
590        5        +50*2+65*1+90*1+105*1+115*2
590        3        +50*3+105*2+115*2
590        3        +50*1+65*3+115*3
590        3        +65*1+90*2+115*3
590        4        +50*1+90*1+105*1+115*3
590        2        +65*2+115*4
590        2        +50*9+140*1
590        4        +50*2+65*4+90*1+140*1
590        4        +50*1+65*2+90*3+140*1
590        2        +90*5+140*1
590        4        +50*3+65*3+105*1+140*1
590        5        +50*2+65*1+90*2+105*1+140*1
590        4        +50*3+90*1+105*2+140*1
590        5        +50*1+65*3+90*1+115*1+140*1
590        4        +65*1+90*3+115*1+140*1
590        5        +50*2+65*2+105*1+115*1+140*1
590        5        +50*1+90*2+105*1+115*1+140*1
590        4        +65*2+90*1+115*2+140*1
590        5        +50*1+65*1+105*1+115*2+140*1
590        3        +105*1+115*3+140*1
590        3        +50*1+65*4+140*2
590        3        +65*2+90*2+140*2
590        5        +50*1+65*1+90*1+105*1+140*2
590        3        +50*2+105*2+140*2
590        3        +65*3+115*1+140*2
590        4        +90*1+105*1+115*1+140*2
590        3        +65*1+105*1+140*3
590        4        +50*5+65*1+90*1+185*1
590        3        +50*6+105*1+185*1
590        3        +65*3+105*2+185*1
590        3        +90*1+105*3+185*1
590        4        +50*4+90*1+115*1+185*1
590        4        +50*4+65*1+140*1+185*1
590        4        +50*3+115*1+140*1+185*1
590        3        +65*2+90*1+185*2
590        4        +50*1+65*1+105*1+185*2
590        3        +105*1+115*1+185*2
595        2        +50*8+65*3
595        3        +50*1+65*7+90*1
595        3        +50*7+65*1+90*2
595        2        +65*5+90*3
595        3        +50*2+65*6+105*1
595        3        +50*8+90*1+105*1
595        4        +50*1+65*4+90*2+105*1
595        3        +65*2+90*4+105*1
595        4        +50*2+65*3+90*1+105*2
595        4        +50*1+65*1+90*3+105*2
595        3        +50*3+65*2+105*3
595        3        +50*2+90*2+105*3
595        3        +50*7+65*2+115*1
595        3        +65*6+90*1+115*1
595        3        +50*6+90*2+115*1
595        4        +50*1+65*5+105*1+115*1
595        4        +65*3+90*2+105*1+115*1
595        5        +50*1+65*2+90*1+105*2+115*1
595        3        +90*3+105*2+115*1
595        4        +50*2+65*1+105*3+115*1
595        3        +50*6+65*1+115*2
595        3        +65*4+105*1+115*2
595        4        +65*1+90*1+105*2+115*2
595        3        +50*1+105*3+115*2
595        2        +50*5+115*3
595        2        +65*7+140*1
595        4        +50*6+65*1+90*1+140*1
595        3        +50*7+105*1+140*1
595        4        +65*4+90*1+105*1+140*1
595        4        +50*1+65*3+105*2+140*1
595        4        +65*1+90*2+105*2+140*1
595        4        +50*1+90*1+105*3+140*1
595        4        +50*5+90*1+115*1+140*1
595        4        +65*2+105*2+115*1+140*1
595        3        +50*5+65*1+140*2
595        2        +105*3+140*2
595        3        +50*4+115*1+140*2
595        3        +50*3+65*4+185*1
595        4        +50*2+65*2+90*2+185*1
595        3        +50*1+90*4+185*1
595        5        +50*3+65*1+90*1+105*1+185*1
595        3        +50*4+105*2+185*1
595        4        +50*2+65*3+115*1+185*1
595        5        +50*1+65*1+90*2+115*1+185*1
595        5        +50*2+90*1+105*1+115*1+185*1
595        4        +50*1+65*2+115*2+185*1
595        3        +90*2+115*2+185*1
595        3        +65*1+115*3+185*1
595        5        +50*1+65*2+90*1+140*1+185*1
595        3        +90*3+140*1+185*1
595        5        +50*2+65*1+105*1+140*1+185*1
595        5        +65*1+90*1+115*1+140*1+185*1
595        5        +50*1+105*1+115*1+140*1+185*1
595        3        +65*2+140*2+185*1
600        1        +50*12
600        3        +50*5+65*4+90*1
600        3        +50*4+65*2+90*3
600        2        +50*3+90*5
600        3        +50*6+65*3+105*1
600        4        +50*5+65*1+90*2+105*1
600        2        +65*6+105*2
600        3        +50*6+90*1+105*2
600        3        +65*3+90*1+105*3
600        3        +50*1+65*2+105*4
600        2        +90*2+105*4
600        4        +50*4+65*3+90*1+115*1
600        4        +50*3+65*1+90*3+115*1
600        4        +50*5+65*2+105*1+115*1
600        4        +50*4+90*2+105*1+115*1
600        3        +65*1+105*4+115*1
600        4        +50*3+65*2+90*1+115*2
600        3        +50*2+90*3+115*2
600        4        +50*4+65*1+105*1+115*2
600        4        +50*2+65*1+90*1+115*3
600        3        +50*3+105*1+115*3
600        3        +50*1+90*1+115*4
600        3        +50*4+65*4+140*1
600        4        +50*3+65*2+90*2+140*1
600        3        +50*2+90*4+140*1
600        5        +50*4+65*1+90*1+105*1+140*1
600        3        +50*5+105*2+140*1
600        4        +50*3+65*3+115*1+140*1
600        5        +50*2+65*1+90*2+115*1+140*1
600        5        +50*3+90*1+105*1+115*1+140*1
600        4        +50*2+65*2+115*2+140*1
600        4        +50*1+90*2+115*2+140*1
600        4        +50*1+65*1+115*3+140*1
600        2        +115*4+140*1
600        4        +50*2+65*2+90*1+140*2
600        3        +50*1+90*3+140*2
600        4        +50*3+65*1+105*1+140*2
600        5        +50*1+65*1+90*1+115*1+140*2
600        4        +50*2+105*1+115*1+140*2
600        3        +90*1+115*2+140*2
600        3        +50*1+65*2+140*3
600        2        +90*2+140*3
600        3        +65*1+115*1+140*3
600        3        +50*7+65*1+185*1
600        3        +65*5+90*1+185*1
600        4        +50*1+65*4+105*1+185*1
600        4        +65*2+90*2+105*1+185*1
600        5        +50*1+65*1+90*1+105*2+185*1
600        3        +50*2+105*3+185*1
600        3        +50*6+115*1+185*1
600        4        +65*3+105*1+115*1+185*1
600        4        +90*1+105*2+115*1+185*1
600        4        +65*1+105*2+140*1+185*1
600        3        +50*2+65*2+185*2
600        3        +50*1+90*2+185*2
600        4        +50*1+65*1+115*1+185*2
600        2        +115*2+185*2
600        3        +90*1+140*1+185*2
605        2        +50*3+65*7
605        3        +50*9+65*1+90*1
605        3        +50*2+65*5+90*2
605        3        +50*1+65*3+90*4
605        2        +65*1+90*6
605        2        +50*10+105*1
605        4        +50*3+65*4+90*1+105*1
605        4        +50*2+65*2+90*3+105*1
605        3        +50*1+90*5+105*1
605        3        +50*4+65*3+105*2
605        4        +50*3+65*1+90*2+105*2
605        3        +50*4+90*1+105*3
605        3        +50*2+65*6+115*1
605        3        +50*8+90*1+115*1
605        4        +50*1+65*4+90*2+115*1
605        3        +65*2+90*4+115*1
605        5        +50*2+65*3+90*1+105*1+115*1
605        5        +50*1+65*1+90*3+105*1+115*1
605        4        +50*3+65*2+105*2+115*1
605        4        +50*2+90*2+105*2+115*1
605        3        +50*1+65*5+115*2
605        3        +65*3+90*2+115*2
605        5        +50*1+65*2+90*1+105*1+115*2
605        3        +90*3+105*1+115*2
605        4        +50*2+65*1+105*2+115*2
605        2        +65*4+115*3
605        4        +65*1+90*1+105*1+115*3
605        3        +50*1+105*2+115*3
605        3        +50*8+65*1+140*1
605        4        +50*1+65*5+90*1+140*1
605        3        +65*3+90*3+140*1
605        4        +50*2+65*4+105*1+140*1
605        5        +50*1+65*2+90*2+105*1+140*1
605        3        +90*4+105*1+140*1
605        5        +50*2+65*1+90*1+105*2+140*1
605        3        +50*3+105*3+140*1
605        3        +50*7+115*1+140*1
605        4        +65*4+90*1+115*1+140*1
605        5        +50*1+65*3+105*1+115*1+140*1
605        5        +65*1+90*2+105*1+115*1+140*1
605        5        +50*1+90*1+105*2+115*1+140*1
605        4        +65*2+105*1+115*2+140*1
605        2        +65*5+140*2
605        4        +65*2+90*1+105*1+140*2
605        4        +50*1+65*1+105*2+140*2
605        3        +105*2+115*1+140*2
605        4        +50*4+65*2+90*1+185*1
605        3        +50*3+90*3+185*1
605        4        +50*5+65*1+105*1+185*1
605        2        +105*4+185*1
605        5        +50*3+65*1+90*1+115*1+185*1
605        4        +50*4+105*1+115*1+185*1
605        4        +50*2+90*1+115*2+185*1
605        4        +50*3+65*2+140*1+185*1
605        4        +50*2+90*2+140*1+185*1
605        5        +50*2+65*1+115*1+140*1+185*1
605        4        +50*1+115*2+140*1+185*1
605        4        +50*1+90*1+140*2+185*1
605        2        +140*3+185*1
605        3        +65*2+105*1+185*2
605        2        +50*1+185*3
610        2        +50*7+65*4
610        2        +65*8+90*1
610        3        +50*6+65*2+90*2
610        2        +50*5+90*4
610        3        +50*1+65*7+105*1
610        4        +50*7+65*1+90*1+105*1
610        3        +65*5+90*2+105*1
610        2        +50*8+105*2
610        4        +50*1+65*4+90*1+105*2
610        3        +65*2+90*3+105*2
610        3        +50*2+65*3+105*3
610        4        +50*1+65*1+90*2+105*3
610        3        +50*2+90*1+105*4
610        3        +50*6+65*3+115*1
610        4        +50*5+65*1+90*2+115*1
610        3        +65*6+105*1+115*1
610        4        +50*6+90*1+105*1+115*1
610        4        +65*3+90*1+105*2+115*1
610        4        +50*1+65*2+105*3+115*1
610        3        +90*2+105*3+115*1
610        3        +50*5+65*2+115*2
610        3        +50*4+90*2+115*2
610        3        +65*1+105*3+115*2
610        3        +50*4+65*1+115*3
610        2        +50*3+115*4
610        4        +50*5+65*2+90*1+140*1
610        3        +50*4+90*3+140*1
610        4        +50*6+65*1+105*1+140*1
610        3        +65*4+105*2+140*1
610        4        +65*1+90*1+105*3+140*1
610        3        +50*1+105*4+140*1
610        5        +50*4+65*1+90*1+115*1+140*1
610        4        +50*5+105*1+115*1+140*1
610        4        +50*3+90*1+115*2+140*1
610        3        +50*4+65*2+140*2
610        3        +50*3+90*2+140*2
610        4        +50*3+65*1+115*1+140*2
610        3        +50*2+115*2+140*2
610        3        +50*2+90*1+140*3
610        2        +50*1+140*4
610        3        +50*2+65*5+185*1
610        4        +50*1+65*3+90*2+185*1
610        3        +65*1+90*4+185*1
610        5        +50*2+65*2+90*1+105*1+185*1
610        4        +50*1+90*3+105*1+185*1
610        4        +50*3+65*1+105*2+185*1
610        4        +50*1+65*4+115*1+185*1
610        4        +65*2+90*2+115*1+185*1
610        6        +50*1+65*1+90*1+105*1+115*1+185*1
610        4        +50*2+105*2+115*1+185*1
610        3        +65*3+115*2+185*1
610        4        +90*1+105*1+115*2+185*1
610        4        +65*3+90*1+140*1+185*1
610        5        +50*1+65*2+105*1+140*1+185*1
610        4        +90*2+105*1+140*1+185*1
610        5        +65*1+105*1+115*1+140*1+185*1
610        3        +50*3+90*1+185*2
610        3        +50*2+140*1+185*2

TA的精华主题

TA的得分主题

发表于 2016-1-20 09:32 | 显示全部楼层
香川群子 发表于 2016-1-19 23:28
h        n        f1
590        2        +50*4+65*6
590        2        +50*10+90*1

谢谢,但是用您的程序只能算出4组。 参数没设对吗 1.png 【2016.01.20】凑数字凑金额的最佳递归程序by_kagawa.rar (25.24 KB, 下载次数: 115)



TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-20 11:35 | 显示全部楼层
本帖最后由 香川群子 于 2016-1-20 11:51 编辑
Mithril秘银 发表于 2016-1-20 09:32
谢谢,但是用您的程序只能算出4组。 参数没设对吗

对于你的问题,我另有程序可快速计算。
用我的这个程序,只能计算每个元素最多只出现1次的结果。

除非你把每个元素,按照最大可能出现次数补充进去,然后再计算。
但这样一来,计算元素变成了46个,最大可能性有=2^46=7.03687E+13
需要计算至少5分钟。

而专用程序计算只要0.02秒



TA的精华主题

TA的得分主题

发表于 2016-1-20 19:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2016-1-20 11:35
对于你的问题,我另有程序可快速计算。
用我的这个程序,只能计算每个元素最多只出现1次的结果。

谢谢  我是做工程设计的  现在遇到了实际运行问题  需要排列组合的模拟计算   后期如果需要在匹配再过来麻烦您   非常感谢前面的帮助

TA的精华主题

TA的得分主题

发表于 2016-2-16 15:07 | 显示全部楼层
本帖最后由 guuxy 于 2016-2-16 15:11 编辑

请教香帅:
模块的代码: [a1].Resize(m).Sort [a1], 1, , , , , , 1  
其中的 Sort [a1],是什么意思? 1, , , , , , 1  是什么意思?

TA的精华主题

TA的得分主题

发表于 2016-3-22 10:41 | 显示全部楼层
香川老师,一楼那个附件,目标和值最大只能在2000万左右,再大就溢出了,有没有办法解决啊?

凑数字凑金额的最佳递归程序by_kagawa.rar

28.58 KB, 下载次数: 81

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-3-23 08:31 | 显示全部楼层
本帖最后由 香川群子 于 2016-3-23 08:38 编辑
tongliusang 发表于 2016-3-22 10:41
香川老师,一楼那个附件,目标和值最大只能在2000万左右,再大就溢出了,有没有办法解决啊?

下面这段话是看不见呢,还是看不懂!

使用技巧小提示:
原始数据的数值太大时,很容易造成计算溢出(超过长整型最大值)
此时请设置小数位数参数为负值向上取整然后计算,对计算结果进行筛选。


…………
事实上,只要设置小数位数=1即可得到很多解。

+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+53964.17+21548.61+20000+18537.16+18220.35+5370+800+800+769.41+482+182+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+53569.44+52562.5+20000+7963.09+5370+769.41+376.26+182+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+52562.5+44853.33+35231.78+7963.09+182+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+44853.33+35202.78+30000+21145.83+7963.09+769.41+482+376.26+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+44853.33+35202.78+21145.83+20000+18220.35+769.41+482+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+44853.33+30000+23200+21548.61+18220.35+800+800+769.41+482+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+40902.2+28826+21548.61+21145.83+18537.16+5370+1611.49+800+800+769.41+482+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1050000+30000+23200+21548.61+21145.83+18537.16+18220.35+5370+1611.49+482+376.26+182+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+78944.44+28826+27453.33+20000+18220.35+7963.09+5370+1611.49+800+800+482+182+140+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+75963.89+56247.92+28826+19641.99+5370+1611.49+800+800+769.41+482+182+140
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+74111.11+56247.92+20000+18537.16+18220.35+1611.49+800+769.41+376.26+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+74111.11+42291.67+20000+19641.99+18220.35+7963.09+5370+1611.49+800+482+182+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+70083.33+33551.39+30000+21145.83+18537.16+7963.09+5370+1611.49+800+800+769.41+182+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+66458.33+53964.17+40902.2+23200+5370+800+140
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+66458.33+53569.44+35231.78+18537.16+7963.09+5370+1611.49+800+769.41+482+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+66458.33+52562.5+40902.2+28826+800+769.41+376.26+140
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+56247.92+53964.17+27453.33+21548.61+21145.83+7963.09+1611.49+482+376.26+21+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+56247.92+52562.5+21548.61+20000+18537.16+18220.35+1611.49+800+769.41+376.26+140+21
+20053644.44+20000000+20000000+10034711.11+10018368.33+10000000+10000000+10000000+9532975.56+9500000+4300000+1000000+56247.92+40902.2+35202.78+33551.39+23200+800+769.41+140+21

TA的精华主题

TA的得分主题

发表于 2016-4-13 11:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
要是就要大于等于某个数,而不只是相等呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-13 12:50 | 显示全部楼层
南穆离 发表于 2016-4-13 11:39
要是就要大于等于某个数,而不只是相等呢

可以设置求和区间的,你不仔细看附件吗?!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 16:21 , Processed in 0.036126 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表