找回密码
 加入
搜索
楼主: sybzpq

[效率算法] 问一个数学问题,希望大家帮帮我,谢谢!

 火.. [复制链接]
发表于 2011-3-6 11:19:48 | 显示全部楼层
是不是要判断哪几个数相加得到那个883啊?
发表于 2011-3-6 22:06:40 | 显示全部楼层
回复 15# sybzpq
不是不想写,是确实不明白你的意思到底是什么,上面那段是输出883(如果有这个元素)前的数据
发表于 2011-3-6 22:51:11 | 显示全部楼层
在楼主将问题描述清楚并将之更新于顶楼之前,这帖暂且当个水帖吧。
发表于 2011-3-7 17:12:08 | 显示全部楼层
都没搞懂意思
发表于 2011-3-7 22:27:26 | 显示全部楼层
看看这个是不是你想要的..
#Include <Array.au3>
Const $T=44
Global $arr[$T]=[59,68,78,80,86,89,90,96,98,106,108,116,118,126,128,129,135,136,139,146,148,149,156,158,166,168,169,176,178,186,188,195,196,198,218,219,228,236,238,239,249 ,259,266,270]
Global $i[$T]
Global $findNum=0
Global $find[1000]

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[1])

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
发表于 2011-3-8 11:23:35 | 显示全部楼层
回复 20# www378660084

tx,你先看看那堆数里有没有883这个数再回答,要不也不会问他到底要得到什么了
发表于 2011-3-8 17:33:44 | 显示全部楼层
回复 21# netegg


这个是求和的,闲着没事写着玩,lz好像不在了...
发表于 2011-3-8 18:55:06 | 显示全部楼层
回复 22# www378660084
你那段倒是看明白了,唉,提问的人都跑了,还操什么心,想出来也是白费功夫
发表于 2011-3-8 21:38:32 | 显示全部楼层
是呵.........
发表于 2011-3-12 09:50:18 | 显示全部楼层
学习气氛很好,看看先
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 21:33 , Processed in 0.070522 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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