afan也开始卖萌了 当我看到4个for的的时候,眼睛就花了.... "遍历"是可以实现类似功能啦,但是我的数据是动态录入的,如果用这种"遍历"方法的话,就得先预算可能出现的最大数组个数,预写好这么多for,好像不太好吧。 回复 18# au3x
既然是动态输入,数组太多的话大可以分批次进行组合的.
在输入首两个数组后进行第一次组合,以后每输入完一个数组在原基础上又进行下一步组合.#include <array.au3>
;首输入
Dim $aVarA =
Dim $aVarB =
Local $aArray = _ArrayCombinationsX($aVarA, $aVarB)
_ArrayDisplay($aArray)
;再来
Dim $aVarC =
$aArray = _ArrayCombinationsX($aArray, $aVarC)
;又来
Dim $aVard =
$aArray = _ArrayCombinationsX($aArray, $aVard)
_ArrayDisplay($aArray)
Func _ArrayCombinationsX($avA1, $avA2)
If Not IsArray($avA1) Or Not IsArray($avA2) Then Return SetError(1)
Local $aRe = , $element
For $i = 0 To UBound($avA1) - 1
For $j = 0 To UBound($avA2) - 1
$element = $avA1[$i] & $avA2[$j]
_ArrayAdd($aRe, $element)
Next
Next
_ArrayDelete($aRe, 0)
Return $aRe
EndFunc #include <array.au3>
Dim $varA =
Dim $varB =
Dim $varC =
$var1 = $varA
_ArrayConcatenate($varA, $varB)
_ArrayConcatenate($varA, $varc)
$ss = _ArrayCombinations($varA, 3, "")
_ArrayDisplay($ss)
蛋蛋的方法可行,得出结果后再删除相同的数组就可以了~ 学习,感谢分享!!
页:
1
[2]