|
- '求组合:从n个不同元素中,任取m(m≤n)个元素
- Sub test()
- Dim arr() '数据源
- Dim n, m
- Dim a, b, c '循环变量名
- 'COMBIN(n,m)=m!/((m-n)!n!)
- n = 5
- m = 3
- 'COMBIN(5,3)=5!/(2!*3!)=120/(2*6)=10
- '实例中,很可能不是从1开始的n个自然数,而是一个区域
- ReDim arr(1 To n)
- For a = 1 To n
- arr(a) = a
- Next a
- '循环特点:
- '1)m层循环
- '2)从外到内,初值从LBound(arr)开始,逐层+1
- '3)从内到外,终值从UBound(arr)开始,逐层-1
- For a = 1 To 3
- For b = a + 1 To 4
- For c = b + 1 To 5
- Debug.Print arr(a); arr(b); arr(c)
- Next c
- Next b
- Next a
- End Sub
复制代码 我现在只会这么来“解决”组合问题。显然,不但通用性很差,还是半自动的。
这是群子老师提供的自动生成的代码:http://www.excelpx.com/thread-289661-1-1.html 13#
下面或许有很多相关问题,希望群子老师和高手们多多指导!
问1:群子老师示例和百度的,m,n的定义相反。数学中或最普遍的描述应是哪种?
问2:对于组合问题,自1#这种方法后,新手最适合、最应当掌握的是哪种方法呀?
如果群子老师发过,是哪帖的几楼呀。
谢谢!
PS:本帖不设最佳,只为多学习点
|
|