ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-12 00:09 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:递归
这么好的贴,才看见,标记一下

TA的精华主题

TA的得分主题

发表于 2018-10-13 14:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2014-3-31 00:41
这个例子就是从一堆数中抽取符合条件的组合,直到剩余元数无法满足求和条件时停止。

但显然这样得到的结 ...

香川老师,能不能在这个例子的条件上,要求程序输出最大的数值组合结果。比如1到100,步长为1,求101的目标值,输出最大组合数是50组,最大组合数值累加是5050(当然程序输出结果是这样);但我有组数据,要求组合个数是2到4之间,其数值范围是140.5到143.0,数值长度是39有7个,33.85有20个,31.88有20个,47有6个,37有1个,却输出不了最大的组合数值

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-15 09:33 | 显示全部楼层
sdfsadfsa 发表于 2018-10-13 14:06
香川老师,能不能在这个例子的条件上,要求程序输出最大的数值组合结果。比如1到100,步长为1,求101的目 ...

你是要这样分配吗:

142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
141.76=39+39+31.88+31.88
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
138.55=33.85+33.85+33.85+37
67.7=33.85+33.85

TA的精华主题

TA的得分主题

发表于 2018-10-15 11:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2018-10-15 09:33
你是要这样分配吗:

142.64=31.88+31.88+31.88+47

首先非常感谢,香川老师的回复,没想到香川老师这么忙,也会不计利益抽空回答我,非常感谢

那我直接开门见山了,实在抱歉,上面的数值长度写错了,正确的数值长度是39有8个,33.85有20个,31.88有20个,47有6个,37有2个;

39 +33.85+33.85+33.85=140.55
39 +33.85+33.85+33.85=140.55
39 +33.85+33.85+33.85=140.55
39 +33.85+33.85+33.85=140.55
39 +33.85+33.85+33.85=140.55
39 +33.85+33.85+33.85=140.55

47 +31.88+31.88+31.88=142.64
47 +31.88+31.88+31.88=142.64
47 +31.88+31.88+31.88=142.64
47 +31.88+31.88+31.88=142.64
47 +31.88+31.88+31.88=142.64
47 +31.88+31.88+31.88=142.64

33.85+31.88 +39 + 37=141.73
33.85+31.88 +39 + 37=141.73

刚好其数值范围是140.5到143.0;
这只是我已知的可行解,不知道是不是唯一解,但可以在数值范围里所有长度数值全部利用到了;

我的需求就是希望程序输出,在条件1、数值范围里,条件2、组合个数的限定条件下,求全部组合累加的最大值数解;比如在这例子中,我如果开始用47+47+47=141的组合,最终递归结果就有几个数值组合不了
不知道这个问题难不难,跟求最少损耗差不多,因为我工作之一是车间排单,人工这样凑数时间效率低,出错率高

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-15 17:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sdfsadfsa 发表于 2018-10-15 11:44
首先非常感谢,香川老师的回复,没想到香川老师这么忙,也会不计利益抽空回答我,非常感谢

那我直接开 ...

不是唯一解吧:

142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47
142.64=31.88+31.88+31.88+47

141.76=39+39+31.88+31.88
141.7=33.85+33.85+37+37

140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85
140.55=39+33.85+33.85+33.85

结果都用上,也就可以了吧。

TA的精华主题

TA的得分主题

发表于 2018-10-15 18:02 | 显示全部楼层
香川群子 发表于 2018-10-15 17:36
不是唯一解吧:

142.64=31.88+31.88+31.88+47

可以啊,我就是想要这样的效果,苦于自己没这能力做

TA的精华主题

TA的得分主题

发表于 2018-10-15 18:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2018-10-15 17:36
不是唯一解吧:

142.64=31.88+31.88+31.88+47

可以程序发给我吗,我愿意给香川老师发个小红包

TA的精华主题

TA的得分主题

发表于 2018-10-16 17:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
很遗憾,不知是不会用还是怎么有些没法算,组合元素不能重复,比如3+3+3+5?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-17 13:06 | 显示全部楼层
yeshuangyong 发表于 2018-10-16 17:05
很遗憾,不知是不会用还是怎么有些没法算,组合元素不能重复,比如3+3+3+5?

组合元素中有相同数字重复出现时是可以计算的,
如果你有10个3、8个5,求和=14,那么3+3+3+5=14可以算出来的。

……
但是,如果你只提供3和5这2个数字,要从中凑出14,这个程序做不到。
需要另外的程序。

TA的精华主题

TA的得分主题

发表于 2018-10-24 09:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2014-1-1 15:07
彭版出的题目的帖子
http://club.excelhome.net/forum.php?mod=viewthread&tid=151178&page=7#pid6353576
...

香川老师,你这个附件只能算出来有多少种结果吗,怎么样添加一个TextBox把所有结果列出来,比如1+2+3=6这样
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 22:43 , Processed in 0.045471 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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