一道排列组合的计算题【已解决】
本帖最后由 fenhanxue 于 2018-3-12 00:13 编辑假设给定了100个一维数组(每个数组所包含的元素个数以及元素内容 是给定的),
每个数组的名字是有规律的,以 "$array_"加序号 的格式命名 ,
但每个数组所包含的元素个数以及元素内容,是没有任何规律,如:Global $array_1 = ['1A','1B','1C']
Global $array_2 = ['2A']
Global $array_3 = ['3A','3B']
Global $array_4 = ['4A']
...
Global $array_100 = ['100A','100B','100C']假设1 <= i <= 100
依次随机从数组$array_1、$array_2、$array_1、....$array_i 各取一个元素,组成一个字符串,那么
问题1)一共有多少种组合?
问题2)请列出所有的组合结果?
对于问题1,可以这样计算得到:Func _GET_ZUHESHU($i);得到组合数
; 1 <= $i <= 100
Local $zuhe = 1
For $j = 1 To $i
$zuhe = $zuhe * Execute('UBound($array_'&$j&')')
Next
MsgBox(0,'共有组合数:',$zuhe)
EndFunc对于问题2,想了一上午了,想不出好的算法,大家看看有没好的逻辑
=============举例
例如$i = 3
那么问题1的答案应该是 UBound($array_1) * UBound($array_2) *UBound($array_3) = 3*1*2 = 6
问题2的答案应该是:
1. $array_1 & $array_2& $array_3 即 '1A2A3A'
2. $array_1 & $array_2& $array_3 '1A2A3B'
3. $array_1 & $array_2& $array_3 '1B2A3A'
4. $array_1 & $array_2& $array_3 '1B2A3B'
5. $array_1 & $array_2& $array_3 '1C2A3A'
6. $array_1 & $array_2& $array_3 '1C2A3B'
注:此处的1A1B 1C 2A 3A 3B之类的,是为了方便举例,才这样简写,实际是没有规律的随机长度的字符串 合并两个数组成新数组,再与下一个数组合并,依次类推,直到到达指定序号即可。 回复 2# afan
感谢A版指点
页:
[1]