123排行榜,探索世界,了解各类奇异学识!
123排行榜 > 综合 > 正文

优化排列组合算法:进一步探索最优解

时间:2024-07-26 23:19:33

相关推荐

优化排列组合算法:进一步探索最优解

"下面的代码中,结果字符串表示最终生成的一组组合的结果表达式,选择位数表示从一组数据中取数时,当前的取值在该数组中的位置,已取值数量表示已经从该数组中取的元素的个数,数组大小和共需选数量分别代表M取N组合中的M和N

"彭版的代码利用的是顺序取数的方法(至少我这么认为),也就是取了第二位数后,后面的取数不能再反过来取第二位前面的数,即只允许生成1,2,3的一组数,不能生成2,1,3的这样一组数

Public 结果字符串$, 选择位数%, 已取值数量%, 共需选数量%, 数组大小%

Public 元素数组

Sub 组合(结果字符串$, 取值位数%, 已取值数量%)

If 已取值数量 = 共需选数量 Then

Range("C65536").End(xlUp).Offset(1) = 结果字符串

Exit Sub

End If

If 取值位数 <= 数组大小 - (共需选数量 - (已取值数量 + 1)) Then

"递归循环的条件是:当前的取值位数,不超过数组的总大小减去剩余可取值的数量(即 共需选数量 - (已取值数量+1),其中已取值数量+1代表的是当前的位数取过之后,已经取值的总个数)

"例如1-8中选5个数,数组大小为8,共需选数量为5,则对于第3位数,已取值数量=2,已取值数量+1=3代表的就是当前取值位数3,

"当前的取值位数<=数组大小 - (共需选数量 - (已取值数量 + 1)) =8-(5-(2+1))=6,即第三位数最多只能选数字6,因为如果第3位选7了话,后面剩余的第4位和第5位只有一个8可以取,那么就不足取了

组合 结果字符串 & " " & 元素数组(取值位数, 1), 取值位数 + 1, 已取值数量 + 1

"这一次递归调用的单个组合中的所有元素,即生成其中某一个组合,原理是利用递归循环,依次从数组M中选出N个数来

"例如6选3,依次会生成1,12,123,当已选数量=3时候退出这一次递归

组合 结果字符串, 取值位数 + 1, 已取值数量

"这一递归调用所有可能生成的组合,即当上面的递归已经满足选择了3个元素的时候,退出上面的递归,并将起始的取值位数向后移动一位

"例如6选3,当上面已经生成了123一组数时,满足了退出上一个递归的条件,则将原有的取值位数+1,经过上面的递归,从栈中第一个弹出的取值位数=3 ,向后移动一位,则取值位数为4,"这样,就成功取到了1,2,4一组数

"可以这样理解,第一个递归是单个组合内部横向取数,第二个递归是生成所有组合,即纵向取数

End If

End Sub

Sub main()

Range("C:C").Clear

数组大小 = [A65536].End(xlUp).Row

元素数组 = Range("A1:A" & 数组大小).Value

共需选数量 = [B1]

[C1] = "组合"

组合 "", 1, 0

End Sub

简化了一下代码,少了一些不必要的变量,本想做个flash来帮助理解,可惜不会。

彭版自己所阐述的太极一生二原理,我始终没能理解。不知道我自己上面的理解能不能得到认同。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(3)
  1. Whitney2024-07-26 23:59Whitney[福建省网友]42.1.149.70
    排列组合算法优化对于解决复杂问题非常重要,希望能够有一套更高效的解决方案出现。
    顶5踩0
  2. 向来无缘&奈何情深¤2024-07-26 23:46向来无缘&奈何情深¤[北京市网友]45.124.44.138
    @か ╮溯流光ㄘ、算法优化是提升效率的关键,期待看到哪些最优解的新发现。
    顶8踩0
  3. か ╮溯流光ㄘ、2024-07-26 23:33か ╮溯流光ㄘ、[浙江省网友]103.230.99.193
    这是个很有潜力的研究方向,期待进一步的探索和发现。
    顶10踩0
相关阅读
解决航空物流分配难题(量子电脑首次实际应用)

解决航空物流分配难题(量子电脑首次实际应用)

瑞典查尔莫斯工学院Chalmers University of Technology的研究人员成功地展示使用量子计算机解决了一个实际问题。量子电脑示意图。在此之前人们听说的

2023-01-20

全球首个活体机器人诞生(靠自己活动可编程会自愈)

全球首个活体机器人诞生(靠自己活动可编程会自愈)

世界首个用细胞制作的活体机器人,已经诞生

2023-06-27

青甲航空成功研发多重空间结构碳纤维材料(“结构创新”聚焦材料新活力升级)

青甲航空成功研发多重空间结构碳纤维材料(“结构创新”聚焦材料新活力升级)

新材料解决了传统碳纤维材料单一方向纤维承受外力冲击的弊端,利用碳纤维结构交叠,多方向均匀分散外力冲击

2022-11-26

谷歌准备研制比普通电脑快一万倍的量子计算机

谷歌准备研制比普通电脑快一万倍的量子计算机

自1999年以来,加拿大公司DWave一直在从事量子计算技术的研究

2023-08-04

李喆:阿尔法围棋对围棋之谜的影响 以及人类社区的改变

李喆:阿尔法围棋对围棋之谜的影响 以及人类社区的改变

在其最新研究成果中,他指出阿尔法围棋虽然在围棋领域取得了重大突破,但并未真正解开围棋之谜,人类在围棋领域仍然具有独特价值和意义

2024-03-20