Re: [算表] EXCEL的数字排列组合

楼主: hwangshan (尿布超人)   2018-09-20 21:23:30
※ 引述《hwangshan (尿布超人)》之铭言:
: 软件:Excel
: 版本:2010
: 问题:
: 已知手上有5个数字,分别为1、3、3、9、0,
: 要列出这5个数字的所有排列方式,
: 例如3、1、3、9、0
: 格式如下图
: https://i.imgur.com/AEBqzSa.png
: 小弟刚接触excel,还请不吝指教。
老实说,我没想到答案这么困难且复杂~
所以我重新发问好了,正才是我真正要问的问题,也许就不需要那么复杂的计算式~
以数学来表达我的问题的话,就是
A1+A2+A3+A4=16 且 B1+B2+B3+B4+B5+B6=5 ,求A1~A4、B1~B6之所有非负整数解
而应用上,总合值16和总合值5,是由使用者输入的变量。
非负整数解的个数很简单,就是H(4,16)乘上H(6,5)
基于此,首先我先思考该怎么列出所有A1+A2+A3+A4=16的所有非负整数解
翻翻小时候的课本,得知可以等效成这样规律的方式来找出所有解
11111+1+1111+111111=(5,1,4,6)
+111111+11+11111111=(0,6,2,8)
以此类推
就是把问题变成排列16个"1"和3个"+",之后就能转换成我要的所有非负整数解了
基于这个逻辑,我昨天才会问那个问题,因为只要有排列函式就能解决了
但是昨天板上大大提供的运算式太难了,我完全不知道该从何修改
所以我在想,也许我是绕了远路了,这样把整个问题丢出来也许能得到比较简单的算法
毕竟实际上,排列的元素只有"1"和"+"这2个
最后,我再次把问题重提一次
以数学来表达我的问题的话,就是
A1+A2+A3+A4=16 且 B1+B2+B3+B4+B5+B6=5 ,求A1~A4、B1~B6之所有非负整数解
而应用上,总合值16和总合值5,是由使用者输入的变量。
https://i.imgur.com/cLnNBJq.png
PS.其实个人觉得也许VBA会比较容易解决问题,目前小弟正在往VBA研究中
作者: newacc (XD)   2018-09-20 22:45:00
从排列组合变成规划求解了XDD如果要用VBA的话我会选择For Loop硬爆http://bit.ly/2MQqfoS 连结是我的google drive空间用VBA反而不需要太钻研排列组合的逻辑,就是一个乖乖穷举的概念XD16,5大约有24万笔资料,我电脑测50微秒跑完全部资料,然后花2秒半写进格子里XDA4赋值那行应该移到For A3循环里才对,不需要算那么多次但不管怎样瓶颈就是写进硬盘的速度

Links booklink

Contact Us: admin [ a t ] ucptt.com