找回密码
 加入
搜索
查看: 2905|回复: 8

[效率算法] 请教一个有关数组的问题[已解决]

  [复制链接]
发表于 2013-3-13 03:52:37 | 显示全部楼层 |阅读模式
本帖最后由 jtw 于 2013-3-14 10:48 编辑

已知数组$array[9]=[4,8,16,32,64,128,256,512,1024]
现得到一个变量值$x=68,用什么方法可以判断出这个‘68’是数组中哪几个数之和,并返回这几个数。
发表于 2013-3-13 21:52:36 | 显示全部楼层
本帖最后由 魔导 于 2013-3-13 21:53 编辑

这个的答案好像 非单一哦
就像:
        $array [7] = [4,5,1,8,2,3,7]
        $a = 9
        该返回 那几个数呢?
       4+5,8+1,7+2,2+3+4.......
发表于 2013-3-13 22:29:19 | 显示全部楼层
一楼的转换成二进制数比较好判断
 楼主| 发表于 2013-3-14 09:37:47 | 显示全部楼层
转换成二进制的用什么方法判断呀?请大神指教,谢谢!
另这个数组是有规律的,依次增加2倍。
 楼主| 发表于 2013-3-14 09:41:10 | 显示全部楼层
$x=68
返回的结果应该是唯一的$a=4,$b=64
就是不知道用什么方法好,用排列组合不知道可不可以?
发表于 2013-3-14 10:31:04 | 显示全部楼层
Dim $array[9]=[4,8,16,32,64,128,256,512,1024]

$num=68
$result=""

For $n=0 To UBound($array)-1
        If BitAND($array[$n],$num)>0 Then
                If $result="" Then
                        $result=$array[$n]
                Else
                        $result&=" "&$array[$n]
                EndIf
        EndIf
Next
MsgBox(0,"结果",$num&@CRLF&$result)
这个试下

评分

参与人数 1金钱 +10 收起 理由
jtw + 10

查看全部评分

 楼主| 发表于 2013-3-14 10:43:32 | 显示全部楼层
非常感谢楼上的,要的就是这个效果
发表于 2013-5-24 17:12:22 | 显示全部楼层
感谢分享 学习学习
发表于 2016-6-6 16:20:31 | 显示全部楼层
感谢分享,学习一下。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 01:55 , Processed in 0.079895 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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