您的位置:首页 > 编程语言 > Java开发

java算法买苹果

2014-02-24 20:23 134 查看
今天笔试有这么个题题目:有600个苹果,要求分装在10个盒子中。对于顾客要求的任意苹果数都可以通过此10个盒子进行组合得到。

当时不明白,回来后就在网上查了查有好多朋友给出了解决的代码,但是说明原理个人没看太懂,后来自己想了想,用自己的思维今天给朋友们说下,

首先,任何一个数都可以转化为一个二进制数,比如3 二进制位11,  所以是个箱子就可以看成是一个10位的二进制数,这样他可以表示的数就是1023

而二进制中的1都是2 的倍数。例如11,第一个1是2的一次,第二个1是2的零次。所以我们可以定义一个长度为10的数组来存放2的倍数。然后我们将顾客要求的任意数转化为二进制数,这个二进制数就可以用数组中2的倍数来表示了。

在举个例子:3  二进制11    数组存放了a[0]=1,a[1]=2 a[3]=2的三次方  a[4]=2的四次方。。。      而11是2的一次方+2的零次方。  所以就可以选数组中的a[0]和a[1]组成。

就是这样子。具体代码可以参考这位朋友的http://blog.csdn.net/xiaoya629/article/details/5502719
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java算法 苹果