求组合的解-一个颇有意思的算法解法

上传人:平*** 文档编号:14611897 上传时间:2017-11-02 格式:DOCX 页数:6 大小:53.85KB
返回 下载 相关 举报
求组合的解-一个颇有意思的算法解法_第1页
第1页 / 共6页
求组合的解-一个颇有意思的算法解法_第2页
第2页 / 共6页
求组合的解-一个颇有意思的算法解法_第3页
第3页 / 共6页
求组合的解-一个颇有意思的算法解法_第4页
第4页 / 共6页
求组合的解-一个颇有意思的算法解法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《求组合的解-一个颇有意思的算法解法》由会员分享,可在线阅读,更多相关《求组合的解-一个颇有意思的算法解法(6页珍藏版)》请在金锄头文库上搜索。

1、求组合的解 - 一个颇有意思的算法解法数学当中的组合,是指从给定个数的元素中仅仅取出指定个数的元素,不考虑次序。例如:有同学小张、小王、小李和小赵 4 个人,要选派其中任意 3 个人去完成某项工作,一共有多少种选派的方式。这就是组合问题,数学中解决的往往是有多少种组合数,而少有考虑每种组合的具体情况。本问题是要罗列出所有这些情况,例如显示结果:张,王,李张,王,赵张,李,赵王,李,赵从 m 个元素中,每次取出 n 个元素的组合数,这里假设记作:C(m,n)本解采用移位方法,其基本方法与步骤如下,下面以 m=5,n=3 为例子,且元素为:1, 2,3,4,5一将 m 个元素存入一维数组 d 当中

2、:d 1 d 2 d 3 d 4 d 51 2 3 4 5另外建立一个辅助用的一维数组 A,存放标志“1”或“0” ,从数组 d 里每次取 3 个元素进行组合,具体取哪 3 个元素,取决于数组 A 里的标志,当数组 A 里的第P(1 m + 1 ThenMsgBox 你有 & m + 1 & 个元素, & vbCrLf & vbCrLf & _你设置的 n 值为: & n & , & vbCrLf & vbCrLf & _n 不能超过 m!Exit SubEnd IfNNNN = JJ(m + 1) / JJ(n) / JJ(m + 1 - n)Label4.Caption = 一共有: &

3、NNNN & 种不同的组合。ReDim FZ(m) As Byte初始化辅助数组For i = 0 To n - 1FZ(i) = 1Next i输出一个组合Call 输出(FZ, m)开始移位YesNo = FalseDo While Not YesNoTT = 0For i = UBound(FZ) To UBound(FZ) - n + 1 Step -1TT = TT + FZ(i)Next iIf TT 0 ThenFor J = i + 1 To UBound(FZ)If S 0 ThenFZ(J) = 1S = S - 1ElseFZ(J) = 0End IfNext JEnd

4、IfExit ForEnd IfNext iEnd SubPrivate Sub 输出(FZ, ByVal m As Integer)Dim i As IntegerDim MyStr As String输出一个组合MyStr = For i = 0 To mIf FZ(i) = 1 ThenIf MyStr = ThenMyStr = d(i)ElseMyStr = MyStr & , & d(i)End IfEnd IfNext iIf Text3.Text = Then Text3.Text = MyStrElseText3.Text = Text3.Text & vbCrLf & MyStrEnd IfEnd Sub自定义求阶乘的函数Private Function JJ(ByVal H As Integer) As DoubleDim i As DoubleDim J As DoubleJ = 1For i = 1 To HJ = J * iNext iJJ = JEnd Function

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号