关于算法的问题!

xkdh 2003-11-13 02:45:43
就是关于数学里排列组合Cnm,这里求出了Cnm的值,但如何得到其中的每一项呢?
如:n=5 m=3 则Cnm=10的项如下:
123,124,125,134,135,145,234,235,245,345
请问用什么算法可以将以上每一项排出来.
小弟的基本功不过硬还望大家指点!!!
...全文
73 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinshou1979330 2003-11-14
  • 打赏
  • 举报
回复
主要你要知道它的公式啊

把公式加到里面不就行了么

别说你不知道公式啊
northwolves 2003-11-14
  • 打赏
  • 举报
回复
刚写的递归代码:
' add a listbox and a commandbutton on form1
Private Sub Command1_Click()
Dim temp
temp = Split(cnm(15, 10), "*")
For i = 0 To UBound(temp)
List1.AddItem temp(i)
Next
MsgBox counts
End Sub



Function cnm(ByVal n As Integer, ByVal m As Integer) As String
Dim temp, all As String
Dim i As Long, j As Long
If m = 0 Then cnm = ""
If m = 1 Then
cnm = 1
For i = 2 To n
cnm = cnm & "*" & i
Next
End If
If m = 2 Then
For i = 1 To n - 1
For j = i + 1 To n
cnm = cnm & "*" & i & "," & j
Next
Next
End If
If m > 2 And n >= m Then
temp = Split(cnm(n - 1, m - 1), "*")
For i = 0 To UBound(temp)
If temp(i) <> "" Then temp(i) = temp(i) & "," & n
Next
cnm = Join(temp, "*")
cnm = cnm(n - 1, m) & "*" & cnm
End If
If Left(cnm, 1) = "*" Then cnm = Right(cnm, Len(cnm) - 1)
If Right(cnm, 1) = "*" Then cnm = Left(cnm, Len(cnm) - 1)
counts = UBound(Split(cnm, "*")) + 1
End Function
ahbbnimor 2003-11-13
  • 打赏
  • 举报
回复
你要是想每一项都得到,那只有穷举了.

power17 2003-11-13
  • 打赏
  • 举报
回复
你是求Cmn的值吗?
xkdh 2003-11-13
  • 打赏
  • 举报
回复
可能是我说得不清楚,说简单点,Cnm得值我们知道了,我们就是要找个算法能求出:
123,124,125……345这10项。
pickitup 2003-11-13
  • 打赏
  • 举报
回复
你的机器是286还是386,这样的穷举也不能完成吗?
有功夫琢磨算法不如试一试到底花了多长时间完成穷举,如果确实太浪费你的宝贵时间再考虑研究算法也不迟!
xkdh 2003-11-13
  • 打赏
  • 举报
回复
这里真令我失望。。。。。。
射天狼 2003-11-13
  • 打赏
  • 举报
回复
又看了一遍题目,可能是我的理解有误!!
射天狼 2003-11-13
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim strTmp As String, strArray() As String

strTmp = "123,124,125,134,135,145,234,235,245,345"
strArray = Split(strTmp, ",")
'一个数组代表一个数字!
End Sub
flc 2003-11-13
  • 打赏
  • 举报
回复
关注
xkdh 2003-11-13
  • 打赏
  • 举报
回复
应该有一种算法的。
穷举太耗时间了。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧