netegg 发表于 2014-12-9 22:22:03

回复 14# afan
afan也开始卖萌了

austere 发表于 2014-12-10 08:23:47

当我看到4个for的的时候,眼睛就花了....

au3x 发表于 2014-12-10 10:47:24

"遍历"是可以实现类似功能啦,但是我的数据是动态录入的,如果用这种"遍历"方法的话,就得先预算可能出现的最大数组个数,预写好这么多for,好像不太好吧。

user3000 发表于 2014-12-10 20:13:26

回复 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

austere 发表于 2014-12-11 10:11:06

#include <array.au3>
Dim $varA =
Dim $varB =
Dim $varC =
$var1 = $varA
_ArrayConcatenate($varA, $varB)
_ArrayConcatenate($varA, $varc)

$ss = _ArrayCombinations($varA, 3, "")
_ArrayDisplay($ss)
蛋蛋的方法可行,得出结果后再删除相同的数组就可以了~

deaph 发表于 2014-12-11 10:23:39

学习,感谢分享!!
页: 1 [2]
查看完整版本: 数组元素 组合[已解决]