只会用循环,不会递归;列出1,2,2,2,2,2,2,2,2的组合,想循环排序组合的数量发现结果只有9种,但是遍历的数量大到无奈。实在不知道如何打乱顺序排列组合了
- Sub test()
- Dim a%, b%, c%, i%, ii%, iii%, n%
- Dim br(999)
- a = 2: b = 4: c = 8
- For i = 0 To Int(16 / a): For ii = 0 To Int(16 / b): For iii = 0 To Int(16 / c)
- If a * i + b * ii + c * iii = 16 Then
- br(n) = 1
- For m = 1 To i + ii + iii
- If m <= i Then
- br(n) = br(n) & "+" & a
- ElseIf m <= i + ii Then
- br(n) = br(n) & "+" & b
- Else
- br(n) = br(n) & "+" & c
- End If
- Next m
- n = n + 1
- End If
- Next iii, ii, i
- [a1].Resize(, n) = br
- End Sub
复制代码 |