ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: 又一年了

[求助] 组合求和,求一段代码。先谢谢各位老师了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-5-15 21:16 | 显示全部楼层
本帖最后由 香川群子 于 2013-5-15 21:20 编辑
小花鹿 发表于 2013-5-12 13:02
占位等高手。


20楼更新了代码,你去看一看,学习学习……

虽然仅仅12个元素,但含正、负值组合一共有531440组解,全部计算和输出到txt文件耗时 15秒。
txt文件有 26.1MB

下面是最后几行:
…………
-A5-A4 | -18-25
-A5-A4-A10 | -18-25-50
-A5-A4-A11 | -18-25-44
-A5-A4-A11-A10 | -18-25-44-50
-A5-A11-A10 | -18-44-50
-A4-A10 | -25-50
-A4-A11 | -25-44
-A4-A11-A10 | -25-44-50
-A11-A10 | -44-50
h = 0, Result: 531440/ Calc 354294 Time: 15.219s

TA的精华主题

TA的得分主题

发表于 2013-5-15 21:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2013-5-15 21:16
20楼更新了代码,你去看一看,学习学习……

虽然仅仅12个元素,但含正、负值组合一共有531440组解, ...

对这类题目的算法很感兴趣,但没认识到它的实际意义,所以,学习上没有动力。

TA的精华主题

TA的得分主题

发表于 2013-5-16 05:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 香川群子 于 2013-5-16 05:18 编辑

楼主规则为:
已知有m个元素(如m=12),可以从中任取n个参与运算,
并且每个元素可以各自取正数或负数参与一次运算,那么一共有多少组解呢?

以m=12为例,分析计算如下:
元素n    组合数   符号数   总组合数
1        12        2        24
2        66        4        264
3        220        8        1760
4        495        16        7920
5        792        32        25344
6        924        64        59136
7        792        128        101376
8        495        256        126720
9        220        512        112640
10        66        1024        67584
11        12        2048        24576
12        1        4096        4096


因此总数合计有解: 531440个。



解释:
首先,取n个元素时有组合=combin(m,n)
然后,还要考虑符号的组合=2^n
  比如,n=1个元素时有 +、- 两种,
增加1个元素,n=2个元素时则有 ++、+-、-+、-- 四种,
即每增加1个元素都会增加2种符号变化,需要乘以2,所以是=2^n

于是,把n个元素的组合数=combin(m,n)再乘以符号变化数=2^n,就得到了n个元素时的全部组合解。

最后,把n=1 to m 的所有组合解累计,就得到了m=12时的组合解总数: 531440


这个结果,和递归计算结果是一致的。

以上

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-26 09:57 | 显示全部楼层
今天旧帖新翻,竟然发现香川群子的解决方案,比先前强劲不知多少倍,神啊!
上次我已窃喜了,匆忙中只看了第一页就认为大功告成了,想不到还有这么全,这么快的代码。
香川群子,我要向你行跪拜大礼,单脚的哦

谢谢谢谢!
谢谢谢谢!

TA的精华主题

TA的得分主题

发表于 2013-5-26 10:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
又一年了 发表于 2013-5-26 09:57
今天旧帖新翻,竟然发现香川群子的解决方案,比先前强劲不知多少倍,神啊!
上次我已窃喜了,匆忙中只看了 ...

嚯嚯……总算你还会回来看看自己的帖子。

不然就浪费了哦。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-26 10:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
10多天里,一直在学习20120501 的代码,但收效甚微。底子薄啊!
侠圣香川群子的代码解决了一个我需要的最基本的问题:所有符合条件的组合。
下一步的任务按这种组合形式进行再计算并布置显示位置,难讲清楚,待整理好思路后,再来求您教香川群子,好吗?

TA的精华主题

TA的得分主题

发表于 2013-7-13 20:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2013-5-26 10:05
嚯嚯……总算你还会回来看看自己的帖子。

不然就浪费了哦。

楼主笨得可爱--因为她不知道你的厉害。我可不一样,第一次接触里,就知道你厉害,甚至反感你的傲气(哈哈)。
我就不知道你们是学啥子专业的,为什么如此通透灵巧。
我是如此的笨,通过学习你们,居然做出很多小工具,近朱者赤啊。这个工具很好用,你看一下,http://club.excelhome.net/thread-1033199-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-9 18:07 , Processed in 0.020980 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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