#2
ysr28572023-01-08 23:57
如下是可调用程序:(不知道对不对)
Private Function paixu0(a As String, b As String) As String Dim i As Integer Dim ak(), s105, cr(), f, bk() s103 = a Set f = CreateObject("Scripting.Dictionary") s105 = Split(s103, "/") s205 = Split(b, "/") j1 = UBound(s105) j2 = UBound(s105) Print j1 For k = 1 To j1 n1 = n1 + 1 ReDim Preserve ak(1 To n1) ak(n1) = s105(n1) Next For k = 1 To j2 n2 = n2 + 1 ReDim Preserve bk(1 To n2) bk(n2) = s205(n2) Next Print ak(1) n = 0 For k = 1 To j1 For i = 1 To j2 n = n + 1 ReDim Preserve cr(1 To n) m = Val(ak(k)) + Val(bk(i)) f(m) = "" Next Next n = 0 m = f.Keys For i = 0 To f.Count - 1 ReDim Preserve cr(1 To i + 1) cr(i + 1) = m(i) Next For i = 1 To UBound(cr) - 1 For j = i + 1 To UBound(cr) If cr(i) > cr(j) Then temp = cr(j) cr(j) = cr(i) cr(i) = temp 'c数组是排序好的 End If Next j ' If i Mod 20 = 0 Then ' s104 = s104 & temp & "/" & vbCrLf ' Else ' s104 = s104 & temp & "/" ' End If Next i For i = 1 To UBound(cr) If i Mod 20 = 0 Then s104 = s104 & cr(i) & "/" & vbCrLf Else s104 = s104 & cr(i) & "/" End If Next Print temp MsgBox "ok" MsgBox s104 '显示数组 paixu0 = s104 End Function |
如下俩数列s10和s11,各任意取一个与另一个数列的数相加,和再排序,如何做呢?
s10=
/1/4/9/16/25/1/8/27/64/125/1/32/243/1024/3125/1/128/2187/16384/78125
s11=
/2/5/8/9/10/12/13/16/17/18/20/24/25/26/28/29/31/32/33/34/
35/36/40/41/43/48/50/52/54/57/59/64/65/68/72/73/80/89/91/96/
126/128/129/132/133/134/136/137/141/144/150/152/153/155/157/160/189/192/244/247/
250/251/252/253/256/259/268/270/275/307/368/371/486/1025/1028/1032/1033/1040/1049/1051/
1056/1088/1149/1152/1267/2048/2188/2191/2195/2196/2203/2212/2214/2219/2251/2312/2315/2430/3126/3129/
3133/3134/3141/3150/3152/3157/3189/3211/3250/3253/3368/4149/4374/5312/6250/16385/16388/16392/16393/16400/
16409/16411/16416/16448/16509/16512/16627/17408/18571/19509/32768/78126/78129/78133/78134/78141/78150/78152/78157/78189/
78250/78253/78368/79149/80312/81250/94509/156250