26个字母,从a开始排下去:a,b,c......x,y,z 完毕,
再排二位:aa,ab,ac,ad........ax,ay,az 完毕
接着还是二位:ba,bb,bc,bd.........bx,by,bz 完毕
接着还是二位:ca,cb,cc,cd.........cx,cy,cz 完毕
..........
..........
..........
接着排三位:aaa,aab,aac,aad..........aax,aay,aaz 完毕
接着还是三位:aba,abb,abc,abd..........abx,aby,abz 完毕
接着还是三位:aca,acb,abc,acd..........acx,acy,acz 完毕
..........
..........
..........
接着还是三位:baa,bab,bac,bad..........bax,bay,baz 完毕
总之就是吧26个字母不重复的排下去,从少位排起实在想不出来,请高手指点....

解决方案 »

  1.   

    用集合里面的枚举算子是比较方便的。
    假如集合A{a~z},
    for each CHAR1 in A
      for each CHAR2 in A
        if CHAR1<>CHAR2 then
        debug.print  CHAR1 ,CHAR2
      next
    next
     这样就可以输出集合中所有的不同的2个元素的组合,其他3个,4个同理,不过要多费点时间。
      

  2.   

    如果是不要求其中的元素是否相同,就去掉 if CHAR1<>CHAR2 then这个比较语句就可以。
      

  3.   

    呵呵,忘了加end if。自己加哈
      

  4.   

    Private Sub Command1_Click()
    Dim i%, j%, mystr$
    Dim arr(25)
    Dim mycon As New Collection
     
     j = 97
     For k = 0 To UBound(arr)
       mystr = Chr(j)
       arr(k) = mystr
       j = j + 1
     Next
     
     For i = 0 To UBound(arr)
       mycon.Add arr(i)
     NextFor Each char1 In mycon
      For Each char2 In mycon
        Text1.Text = Text1.Text & char1 & char2 & Space$(2)
        DoEvents
      Next
    Next
    End Sub
    新建一个工程,一个command1,一个text1(设为多行,有竖滚动条)。把以上代码粘贴。
    以上代码可以在文本框输出a-z中2个字母的组合,4个,5个组合就别这样搞了,要很长时间的,建议直接输出到文件。
      

  5.   

    Private Sub Command1_Click()
    Dim S As Integer, E As Integer, N As Integer, count As Integer
    S = Asc("a")
    E = Asc("f") '此处可变为asc("z"),但是,这样会花很时间的
    N = E - S
    Dim i As Integer, j As Integer
    Dim result() As String, tmp As String
    ReDim result(N)
    Dim Clt As New CollectionFor i = 0 To N
        result(i) = Chr(i + S)
        Clt.Add Chr(i + S)
        List1.AddItem result(i)
    Next i
    count = 2
    Do
        N = Clt.count
        For j = 1 To N
            tmp = Clt.Item(j)
            For i = 0 To E - S
                DoEvents
                Clt.Add tmp & result(i)
                List1.AddItem tmp & result(i)
            Next i
        Next j
    count = count + 1
    Loop While count <= E - S + 1End Sub