算法题:1000个苹果和10个箱子
最近去面试笔试遇到一道算法题,题目是放在最后面的加分题,大概内容如下:
现在有1000个苹果,和10个箱子,如何把这1000个苹果装在这10个箱子里,才能使不管任何数量(1-1000)的苹果,都能一次给出?
当时我基本没思路,也没多少时间,直接跳过了;
后来查了一下,用到二进制的思想;
1000个苹果,最接近1024,转化为2进制,需要占用10个bit,则从右往左数,第一个bit位表示1个苹果,第二个
bit位表示2个苹果,第三个bit位表示4个苹果,,,第10个bit位表示剩下的489个苹果。分别把这些通过放入
相同编号的箱子里。当需要某一数量的苹果时,查看这些数量的哪些bit位为1,为1则表示这个bit位代表有苹果,
取出对应编号的箱子即可。
框编号 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|---|
苹果数目 | 489 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
小于512个苹果用1-9号框表示,如 7–>111(二进制) 用3、2、1号表示;
大于512个就用10号框,剩下的用前面9个框表示。如 666-489=177,177–>10110001,所以589用10、8、6、5、1号;
还有其他博友那淘来的毒药问题,异曲同工:
有8瓶液体,其中一瓶是毒药,毒性可使小白鼠饮用后在20小时内阵亡,需要几只小白鼠才能在20小时内判断哪一瓶是毒药?
给8瓶毒药编码:
第一瓶:000
第二瓶:001
第三瓶:010
第四瓶:011
第五瓶:100
第六平:101
第七平:110
第八平:111
只需3只小老鼠
第一只老鼠喝最后bit位为1的,即第2,4,6,8瓶
第二只老鼠喝中间bit位为1的,即第3,4,7,8瓶
第三只老鼠喝第一bit位为1的,即第5,6,7,8瓶
如果20小时后,没有老鼠死亡,则第一瓶有毒,否则:
假设第二只和第三只老鼠死亡,把对应位上bit设为1,即110,所以第7瓶有毒。
参考:
https://www.cnblogs.com/Kiven5197/p/5475862.html
https://blog.csdn.net/qq_37752223/article/details/88614797
算法题:1000个苹果和10个箱子相关推荐
- 1000个苹果装10个箱子 c语言,分苹果问题和RMB面值问题
问题:假如你有1000个苹果,要装到10个箱子里.满足无论我管你要多少个苹果,你都可以整箱的给我.有解吗?如果有解,你会怎么装? 分析: 一)如果有人要1个,我就只能给1箱子,里面装1个.所以 1 = ...
- PHP 算法题:有多少苹果用来分赃1.1
题目描述: 有5个人偷了一堆苹果,他们准备在第二天进行分赃.晚上,有一个溜出来,他把所有苹果分成了5份,但是多了一个,他顺手把这多了一个,他顺手把多的一个苹果扔给树上的猴子,自己先拿1/5藏了起来.没 ...
- python【力扣LeetCode算法题库】面试题 10.01-合并排序的数组
面试题 10.01. 合并排序的数组 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m ...
- 算法题:分苹果(2016京东招聘笔试题)
笔试题:分苹果(2016京东招聘笔试题) 题目: 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重 ...
- python一只青蛙一次可以_python算法题 python123网站单元四题目
下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 3.博主解题的思路 这道题在c语言中是一道经典的题目,可以用循环,或者递归,在这里我们用python来写 ...
- 1000个苹果要分到10个箱子中去 两种分析方式
前些日子接到了一个Java开发的电话面试,接了电话人家开门见山就直接说现在是否方便,什么什么时候收到您的简历投递,是否可以进行电话面试,如果可以就可以直接开始了,emmm,这么突然,也没好意思问公司名 ...
- 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...
https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...
- 刷了 1000 多道算法题,一点小小的心得!
今天分享一下自己刷算法题目的经验. 首先,要明确你的目标,因为目标不同,刷算法的平台和方法也不同. 常见的目标有以下四种: 学习基本编程语法和思想 想找大厂工作,应对面试 算法竞赛 锻炼自己的思维 大 ...
- 算法题:10级台阶,一次一步或两步,打印所有的走法
算法题:10级台阶,一次一步或两步,打印所有的走法. 此题本质是一个数学排列题,但做了一个变化,根据走法不同,排列不同,当然,这个不重要.(如果换成10个位置,每个位置可放1和2,有多少种放的方法,则 ...
最新文章
- android之AlertDialog 点击其它区域自己主动消失
- 【学习笔记】生产订单实际价格差异计算
- 学会用各种方式备份MySQL数据库
- RAC IP 地址修改
- php字符串反转abcdefg_php中实现字符串翻转的方法
- epoll在ET和LT模式下读写
- Android NDK开发之 ARM与NEON指令说明
- oracle ogg trail 空间,查找OGG trail file中是否存在相关记录的命令
- 2016noip蚯蚓《单调队列》
- 河南科技大学计算机科学与技术专业多少分,2016年河南科技大学计算机科学与技术专业在陕西录取分数线...
- JDY-31蓝牙模块简单通信
- 迅雷一些版本下载链接
- 360浏览器html文件无图标,电脑桌面360浏览器图标不见了解决方法图文教程
- 【参赛作品31】openGauss和PostgreSQL的源码目录结构对比
- The Perfect Man (超完美男人)
- 惠普HP Color LaserJet Enterprise MFP M577c 驱动
- ICLR 22 GRAPH CONDENSATION FOR GNNS 图压缩工作目前的 第一篇 密歇根州立 CMU Snap
- 计算机科学基础大熊猫,大学实验室长什么样? 四川南充300多名小朋友走进西华师大感受生命与科学...
- 什么是数据中心SOP、MOP、EOP?
- STM32L431低功耗停止模式莫名其妙自动唤醒