kevinch 发表于 2011-3-6 11:19:48

是不是要判断哪几个数相加得到那个883啊?

netegg 发表于 2011-3-6 22:06:40

回复 15# sybzpq
不是不想写,是确实不明白你的意思到底是什么,上面那段是输出883(如果有这个元素)前的数据

pusofalse 发表于 2011-3-6 22:51:11

在楼主将问题描述清楚并将之更新于顶楼之前,这帖暂且当个水帖吧。

fenglin1978 发表于 2011-3-7 17:12:08

都没搞懂意思

www378660084 发表于 2011-3-7 22:27:26

看看这个是不是你想要的..#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

netegg 发表于 2011-3-8 11:23:35

回复 20# www378660084

tx,你先看看那堆数里有没有883这个数再回答,要不也不会问他到底要得到什么了

www378660084 发表于 2011-3-8 17:33:44

回复 21# netegg


这个是求和的,闲着没事写着玩,lz好像不在了...

netegg 发表于 2011-3-8 18:55:06

回复 22# www378660084
你那段倒是看明白了,唉,提问的人都跑了,还操什么心,想出来也是白费功夫

www378660084 发表于 2011-3-8 21:38:32

是呵.........

wsfda 发表于 2011-3-12 09:50:18

学习气氛很好,看看先
页: 1 [2]
查看完整版本: 问一个数学问题,希望大家帮帮我,谢谢!