不是不想写,是确实不明白你的意思到底是什么,上面那段是输出883(如果有这个元素)前的数据 在楼主将问题描述清楚并将之更新于顶楼之前,这帖暂且当个水帖吧。 都没搞懂意思 看看这个是不是你想要的..#Include <Array.au3>
Const $T=44
Global $arr[$T]=
Global $i[$T]
Global $findNum=0
Global $find
Global $targetNum=883
Local $j,$k
For $j=0 To 2^$T-1
$sum=0
For $k=0 To $T-1
If BitAND($j,2^$k) Then $sum+=$arr[$k]
If $sum >883 Then ExitLoop
Next
If $sum=$targetNum Then
$findNum+=1
$find[$findNum]=$j
EndIf
;跑了半天没跑完,加了个限制,少找几个,你可以尝试把下面这句去掉让它运行完..
If $findNum>5 Then ExitLoop
Next
_ArrayDisplay($find)
displayTrueNum($find)
Func displayTrueNum($num)
Local $str=""
For $k=0 To $T-1
If BitAND($num,2^$k) Then $str = $str& $arr[$k] & ";"
Next
MsgBox(0,0,$str)
EndFunc
回复 20# www378660084
tx,你先看看那堆数里有没有883这个数再回答,要不也不会问他到底要得到什么了 回复 21# netegg
这个是求和的,闲着没事写着玩,lz好像不在了... 回复 22# www378660084
你那段倒是看明白了,唉,提问的人都跑了,还操什么心,想出来也是白费功夫 是呵......... 学习气氛很好,看看先
页:
1
[2]