已知字母A,B,C,D,E,F,G求他们从2位到7位的所有排列方法允许重复 谢谢 谢谢例:AA,AB,AC,AD,AE,AF,AG
BA,BB,BC,BD,BE,BF,BG
。
。
。
GA,GB,GC,GD,GE,GF,GG
AAA,AAB,AAC,AAD,AAE,AAF,AAG
ABA,ABB,ABC,ABD,ABE,ABF,ABG
。
。
。
GGGGGGA,GGGGGGB,GGGGGGC,GGGGGGD,GGGGGGE,GGGGGGF,GGGGGGG
本人想了一天也没想出正确的
BA,BB,BC,BD,BE,BF,BG
。
。
。
GA,GB,GC,GD,GE,GF,GG
AAA,AAB,AAC,AAD,AAE,AAF,AAG
ABA,ABB,ABC,ABD,ABE,ABF,ABG
。
。
。
GGGGGGA,GGGGGGB,GGGGGGC,GGGGGGD,GGGGGGE,GGGGGGF,GGGGGGG
本人想了一天也没想出正确的
Dim n As LongSub PrintOut()
Dim s As String, i As Long
For i = 0 To n
s = s & Chr(Asc("A") + a(i))
Next i
Print s
End SubSub Subs(s As Long)
Dim i As Long
If s <= n Then
For i = 0 To 6
a(s) = i
Subs s + 1
Next i
Else
PrintOut
End If
End SubSub Main()
For n = 1 To 6
Subs 0
Next n
End Sub标准递归解法……8过用VB做算法蛮怪的……
http://community.csdn.net/Expert/topic/3167/3167506.xml?temp=.2589228把 TechnoFantasy(冰儿马甲www.applevb.com) 老大的算法修改一下就可以了。。
Dim n As Integer, i As Long, num As Integer, j As Integer
Dim temp1 As String, temp2 As Long
n = UBound(x) + 1
For num = 2 To n
For i = 0 To n ^ num - 1
temp1 = ""
temp2 = i
For j = 1 To num
temp1 = x(temp2 Mod n) & temp1
temp2 = temp2 \ n
Next
Debug.Print temp1 & vbCrLf
Next
Next
Debug.Print "共 " & (n ^ (n + 1) - 1) / (n - 1)-n & " 种排列!"
End SubPrivate Sub Command1_Click()
getall "A", "B", "C", "D", "E","F","G"
End Sub
Dim n As Integer, i As Long, num As Integer, j As Integer
Dim temp1() As String, temp2 As Long
n = UBound(x) + 1
For num = 2 To n
For i = 0 To n ^ num - 1
temp2 = i
ReDim temp1(1 To num)
For j = num To 1 Step -1
temp1(j) = x(temp2 Mod n)
temp2 = temp2 \ n
Next
Debug.Print Join(temp1, "")
Next
Next
Debug.Print "共 " & (n ^ (n + 1) - 1) / (n - 1) - n & " 种排列!"
End SubPrivate Sub Command1_Click()
getall "A", "B", "C", "D", "E", "F", "G"
End Sub