第1个回答 2018-10-10
万能的vba可以实现
第一步:初始化一个数组 放入12个数字
第二步:假设定义一个jgArr(1 to 220,1 to 3)as integer
JS=0
FOR I=1 TO 10
FOR J=I+1 TO 11
FOR K=J+1 TO 12
JS=JS+1
JGARR(JS,1)=ARR(I):JGARR(JS,2)=ARR(J):JGARR(JS,3)=ARR(K)
NEXT K
NEXT J
NEXT I
不理解 再问我吧
第2个回答 2018-10-10
a = [a1]
Set d = CreateObject("scripting.dictionary")
ReDim cm(1 To 10000, 1 To 1)
For i = 1 To Len(a)
d(Mid(a, i, 1)) = ""
Next
For i = 1 To Len(a)
For n = 1 To Len(a)
For u = 1 To Len(a)
s = Mid(a, i, 1) & Replace(Mid(a, n, u), Mid(a, i, 1), "")
If Mid(a, i, 1) <> Mid(a, n, u) Then d(s) = ""
Next
Next
Next
For i = 1 To Len(a)
Next
Range("b1").Resize(d.Count) = Application.Transpose(d.keys)
End Sub
在A1填入内容。比如:CJASRVEG
运行此宏,会在B列列出所有配对结果。
此方案的如CJ于JC都会列出。
a = [a1]
Set d = CreateObject("scripting.dictionary")
ReDim cm(1 To 10000, 1 To 1)
For i = 1 To Len(a)
d(Mid(a, i, 1)) = ""
Next
For i = 1 To Len(a)
For n = 1 To Len(a)
For u = 1 To Len(a)
s = Mid(a, i, 1) & Replace(Mid(a, n, u), Mid(a, i, 1), "")
If Mid(a, i, 1) <> Mid(a, n, u) Then d(px(s)) = ""
Next
Next
Next
For i = 1 To Len(a)
Next
Range("b1").Resize(d.Count) = Application.Transpose(d.keys)
End Sub
Function px(x)
Text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = 1 To 26
For n = 1 To Len(x)
If Mid(Text, i, 1) = UCase(Mid(x, n, 1)) Then
s = s & UCase(Mid(x, n, 1))
End If
Next
Next
px = s
End Function
此方案与上方案的区别就是 类似于CJA与JCA 元素相同的归为一种。
第3个回答 2018-10-10
如果只是12个数字的话,你完全可以数得过来:123,124,125...234,235...101112,稍有编程基础的话,任何语言都可以通过编程来实现排列这种类NP问题。