au3x 发表于 2014-12-9 14:35:33

数组元素 组合[已解决]

本帖最后由 au3x 于 2014-12-30 16:29 编辑

我有个试题 :

数组A
var A=个数不固定,先假设3个
数组B
var B=个数不固定,先假设3个
数组C
var C=个数不固定,先假设3个
数组D,数组E.....数组个数不固定,先假设3个


要求得出他们的组合,如:
519,518,517,529,528,527,.......738,737

请大家帮帮忙 指点一下。

haijie1223 发表于 2014-12-9 15:02:59

#include <array.au3>
Dim $varA =
Dim $varB =
Dim $varC =
Dim $n=UBound($varA)*UBound($varB)*UBound($varC)
Dim $aNew[$n],$x=0
For $i = 0 To UBound($varA)-1
        For $j = 0 To UBound($varB)-1
                For $k = 0 To UBound($varC)-1
                        $aNew[$x]=$varA[$i] & $varB[$j] & $varC[$k]
                        $x+=1
                Next
        Next
Next
_ArrayDisplay($aNew)

au3x 发表于 2014-12-9 15:48:42

回复 2# haijie1223


你好,我复制您的代码 后 运行 提示:

C:\Documents and Settings\Administrator\桌面\arr.au3(2,13) : 错误: 表达式错误
Dim $varA = [
~~~~~~~~~~~~^
C:\Documents and Settings\Administrator\桌面\arr.au3 - 1 错误, 0 警告

austere 发表于 2014-12-9 15:55:30

au3x 发表于 2014-12-9 16:08:40

回复 4# austere


   

au3x 发表于 2014-12-9 16:09:37

请问 是不是我的 autoit3   版本问题 ?

austere 发表于 2014-12-9 16:11:10

回复 5# au3x


是不是你的版本问题啊?我的 3.3.11.3测试无问题~

afan 发表于 2014-12-9 16:12:44

请问 是不是我的 autoit3   版本问题 ?
au3x 发表于 2014-12-9 16:09 http://www.autoitx.com/images/common/back.gif


    是版本的原因,可自行添加声明数组元素数量

au3x 发表于 2014-12-9 16:21:17

我用的版本是: AUTOIT_3.3.7.15.1

au3x 发表于 2014-12-9 16:29:53

感谢,2F: haijie1223   4F: austere   8F: afan

au3x 发表于 2014-12-9 16:30:16

回复 2# haijie1223

可是这还不是我想要的效果,我的情况是数组的个数是不固定的,有时两个,有时三、四个,,而且数组的长度也不是固定的。

haijie1223 发表于 2014-12-9 17:46:44

回复 11# au3x


    数组个数不固定,这个有难度哦~

netegg 发表于 2014-12-9 19:45:41

有难度吗?
#Include <Array.au3>
_ArrayCombinations
这个试试

afan 发表于 2014-12-9 20:49:04

有难度吗?
#Include
_ArrayCombinations
这个试试
netegg 发表于 2014-12-9 19:45 http://www.autoitx.com/images/common/back.gif


    馊 蛋 {:face (303):}

user3000 发表于 2014-12-9 21:03:31

本帖最后由 user3000 于 2014-12-9 21:05 编辑

回复 11# au3x


反正就是"遍历"再"遍历"......所以, 改一下2楼的代码就可以了.
现在是最多支持四个数组,你还可以继续照样子继续扩展.

#include <array.au3>
Dim $varA =
Dim $varB =
Dim $varC =
Dim $vard =
Local $aArray = _ArrayCombinationsX($varA, $varB, $varc, $vard)
_ArrayDisplay($aArray)


Func _ArrayCombinationsX($avA1, $avA2, $avA3 = Default, $avA4 = Default)
If Not IsArray($avA1) Or Not IsArray($avA2) Then Return SetError(1)
If IsArray($avA3) Then
    Local $avA_3 = $avA3
Else
        Local $avA_3
EndIf
If IsArray($avA4) Then
    Local $avA_4 = $avA4
Else
        Local $avA_4
EndIf
Local $aRe = ,$x=1
For $i = 0 To UBound($avA1)-1
      For $j = 0 To UBound($avA2)-1
                For $k = 0 To UBound($avA_3)-1
                                        For $l = 0 To UBound($avA_4)-1
                                          $aRe = $x
                                                ReDim $aRe[$x+1]
                        $aRe[$x] = $avA1[$i] & $avA2[$j] & $avA_3[$k] & $avA_4[$l]
                        $x+=1
                                        Next                                       
                Next
      Next
Next
Return $aRe
EndFunc
页: [1] 2
查看完整版本: 数组元素 组合[已解决]