出道Autoit试题考考你!
本帖最后由 apoorman1986 于 2012-4-13 15:22 编辑有一个箱子,里面放有红,橙,黄,绿,青,蓝,紫7种球,从箱子里取三个球,有多少种取法并写出每种取法分别是?
有兴趣的朋友,把自己的代码发上来!{:face (301):}
想看看每个人的思路和代码有多少不同。{:face (303):}
我自己的
#include <Array.au3>
Dim $array=['红','橙','黄','绿','青','蓝','紫'];定义球总数目
Dim $NumToTake=3;定义要取出几个
$aNewArray = _ArrayCombinations($array, $NumToTake ,',');按组合方式取球
_ArrayDisplay($aNewArray, "总共有"&$aNewArray&"种不分先后的办法");显示取球结果
;获取数组第二维的大小, 取出球数的阶乘
Dim $Second=1
For $i=1 To $NumToTake
$Second*=$i
Next
Dim $Result[$aNewArray][$Second];按照算出来的数字定义一个而为数组。
For $i=0 To $aNewArray-1;外循环, 循环每个取球组合
Local $temp=0;定义临时变量
$temp=StringSplit($aNewArray[$i+1],',');按,拆分
_ArrayDelete($temp,0);删除顶部的 数组元素个数
$temp=_ArrayPermute($temp,',') ;按排列重排数组
_ArrayDelete($temp,0);删除顶部的总数
If IsArray($temp) Then;将排列好的数组赋值到结果数组里。
For $j=0 To 5
$Result[$i][$j]=$temp[$j]
Next
EndIf
Next
_ArrayDisplay($Result,'总共有'&$aNewArray*$Second&"种分先后的取法")
数学概率学里有公式的啊,如果不考虑顺序是C(3,7)即7!/(4!*3!),如果考虑顺序是A(3,7)即7*6*5,不用代码……好吧,我承认我扫兴了==! 回复 3# 雪栀
恩,不过公式只能统计多少种方法,而不能一一把每种方法列举出来! 回复 3# 雪栀
有公式是不错, 要求的是以编程方式将所有办法列出来,而不是套用公式获得总数。 我这个例子其实就是排列组合的方式取的。 嘿嘿,正找这样的排列组合写法{:face (316):}
页:
[1]