求一段排列组合有关代码......

sektor 2004-09-25 01:12:33
ABCDEFGHIJ十个字母,每次从中取出5个.求遍历所有组合的代码.
谢.
...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
147896325 2004-09-26
  • 打赏
  • 举报
回复
学习
wumylove1234 2004-09-26
  • 打赏
  • 举报
回复
顶,学习!
northwolves 2004-09-25
  • 打赏
  • 举报
回复
http://blog.csdn.net/northwolves/archive/2004/07/25/51090.aspx

Sub GETALL(ByVal num As Integer, ByRef x As Variant, ByRef RESULT() As String, Optional ByRef all As Long)

Dim A() As String, b() As Integer '临时数组
Dim n As Integer ' 数组元素个数
Dim i As Long '循环变量
Dim TEMP As Long '二进制转换中间变量
Dim num2 As Integer '中间计数变量
n = UBound(x) - LBound(x) + 1 '数组元素个数
If num > n Then MsgBox "ERR!", vbInformation, "WARNING": Exit Sub
ReDim b(0 To n - 1)
all = 0
For i = 0 To 2 ^ n - 1 '循环
TEMP = i
num2 = 0
For J = 0 To n - 1 '转换为二进制
b(J) = TEMP And 1 '0 or 1
TEMP = TEMP \ 2
If b(J) = 1 Then
num2 = num2 + 1
ReDim Preserve A(1 To num2)
A(num2) = x(LBound(x) + J)
End If
Next
If num2 = num Then
all = all + 1
ReDim Preserve RESULT(1 To all)
RESULT(all) = Join(A, ",") '结果保存
Debug.Print RESULT(all) '输出
End If
Next
Debug.Print "从 " & n & " 个元素的数组中选 " & num; " 个元素, 共 " & all & "种组合!"
End Sub

Private Sub Command1_Click()
Dim x, i As Integer
Dim out() As String
x = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
GETALL 5, x, out
End Sub
northwolves 2004-09-25
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
For a = 65 To 70
For b = a + 1 To 71
For c = b + 1 To 72
For d = c + 1 To 73
For e = d + 1 To 74
Debug.Print Chr(a) & vbTab & Chr(b) & vbTab & Chr(c) & vbTab & Chr(d) & vbTab & Chr(e)
Next
Next
Next
Next
Next
End Sub
sektor 2004-09-25
  • 打赏
  • 举报
回复
听起来有点意思,实践一下..先谢了.
不方便公开的话能否mail给兄弟学习一下?谢谢
sektor@21cn.com
apple_001 2004-09-25
  • 打赏
  • 举报
回复
单纯的用for循环是解决不了问题的,我以前做过这样的程序,可以获得任何数字的全排列,不过因为其他原因不方便公开,给你提示一下吧,把数字排列之后,比如1,2,3,4,5第二列是1,2,3,4,6,总是最后一位在变换,当满了10之后,对你这个例子而言,进位,他的上一位加一,同样上一位也要满9加一,依次类推,前一位的最大值总要比后一位小一,最后到了6,7,8,9,10的时候,循环结束。不是很难的
sektor 2004-09-25
  • 打赏
  • 举报
回复
用for循环嵌套很不现实吧??
kmzs 2004-09-25
  • 打赏
  • 举报
回复
慢慢来循环。。。

7,762

社区成员

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

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