找回密码
 加入
搜索
查看: 8768|回复: 20

[AU3基础] 数组元素 组合[已解决]

 火.. [复制链接]
发表于 2014-12-9 14:35:33 | 显示全部楼层 |阅读模式
本帖最后由 au3x 于 2014-12-30 16:29 编辑

我有个试题 :

数组A
var A=[5,6,7,.....]个数不固定,先假设3个
数组B
var B=[1,2,3,.....]个数不固定,先假设3个
数组C
var C=[9,8,7,.....]个数不固定,先假设3个
数组D,数组E.....数组个数不固定,先假设3个


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

请大家帮帮忙 指点一下。
发表于 2014-12-9 15:02:59 | 显示全部楼层
#include <array.au3>
Dim $varA = [5, 6, 7]
Dim $varB = [1, 2, 3]
Dim $varC = [9, 8, 7]
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)
 楼主| 发表于 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 警告
发表于 2014-12-9 15:55:30 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-12-9 16:08:40 | 显示全部楼层
回复 4# austere


   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-12-9 16:09:37 | 显示全部楼层
请问 是不是我的 autoit3   版本问题 ?
发表于 2014-12-9 16:11:10 | 显示全部楼层
回复 5# au3x


是不是你的版本问题啊?  我的 3.3.11.3  测试无问题~
发表于 2014-12-9 16:12:44 | 显示全部楼层
请问 是不是我的 autoit3   版本问题 ?
au3x 发表于 2014-12-9 16:09



    是版本的原因,可自行添加声明数组元素数量
 楼主| 发表于 2014-12-9 16:21:17 | 显示全部楼层
  我用的版本是: AUTOIT_3.3.7.15.1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2014-12-9 16:29:53 | 显示全部楼层
感谢,2F: haijie1223   4F: austere   8F: afan
 楼主| 发表于 2014-12-9 16:30:16 | 显示全部楼层
回复 2# haijie1223

可是这还不是我想要的效果,我的情况是数组的个数是不固定的,有时两个,有时三、四个,,而且数组的长度也不是固定的。
发表于 2014-12-9 17:46:44 | 显示全部楼层
回复 11# au3x


    数组个数不固定,这个有难度哦~
发表于 2014-12-9 19:45:41 | 显示全部楼层
有难度吗?
#Include <Array.au3>
_ArrayCombinations
这个试试
发表于 2014-12-9 20:49:04 | 显示全部楼层
有难度吗?
#Include
_ArrayCombinations
这个试试
netegg 发表于 2014-12-9 19:45



    馊 蛋
发表于 2014-12-9 21:03:31 | 显示全部楼层
本帖最后由 user3000 于 2014-12-9 21:05 编辑

回复 11# au3x


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

#include <array.au3>
Dim $varA[4] = [5, 6, 7, 'a']
Dim $varB[3] = [1, 2, 3]
Dim $varC[3] = [9, 8, 7]
Dim $vard[6] = [9, 8, 7, 'b', 'c', 'd']
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[1]
EndIf
If IsArray($avA4) Then 
    Local $avA_4 = $avA4
Else
        Local $avA_4[1]
EndIf
Local $aRe[1] = [0],$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[0] = $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
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 12:37 , Processed in 0.106828 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表