最近去面试笔试遇到一道算法题,题目是放在最后面的加分题,大概内容如下:

现在有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个箱子相关推荐

  1. 1000个苹果装10个箱子 c语言,分苹果问题和RMB面值问题

    问题:假如你有1000个苹果,要装到10个箱子里.满足无论我管你要多少个苹果,你都可以整箱的给我.有解吗?如果有解,你会怎么装? 分析: 一)如果有人要1个,我就只能给1箱子,里面装1个.所以 1 = ...

  2. PHP 算法题:有多少苹果用来分赃1.1

    题目描述: 有5个人偷了一堆苹果,他们准备在第二天进行分赃.晚上,有一个溜出来,他把所有苹果分成了5份,但是多了一个,他顺手把这多了一个,他顺手把多的一个苹果扔给树上的猴子,自己先拿1/5藏了起来.没 ...

  3. python【力扣LeetCode算法题库】面试题 10.01-合并排序的数组

    面试题 10.01. 合并排序的数组 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B. 编写一个方法,将 B 合并入 A 并排序. 初始化 A 和 B 的元素数量分别为 m ...

  4. 算法题:分苹果(2016京东招聘笔试题)

    笔试题:分苹果(2016京东招聘笔试题) 题目: 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重 ...

  5. python一只青蛙一次可以_python算法题 python123网站单元四题目

    下面向大家介绍几个python算法题. 一:二分法求平方根 1.题目要求为 2.输入输出格式为 3.博主解题的思路 这道题在c语言中是一道经典的题目,可以用循环,或者递归,在这里我们用python来写 ...

  6. 1000个苹果要分到10个箱子中去 两种分析方式

    前些日子接到了一个Java开发的电话面试,接了电话人家开门见山就直接说现在是否方便,什么什么时候收到您的简历投递,是否可以进行电话面试,如果可以就可以直接开始了,emmm,这么突然,也没好意思问公司名 ...

  7. 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...

    https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...

  8. 刷了 1000 多道算法题,一点小小的心得!

    今天分享一下自己刷算法题目的经验. 首先,要明确你的目标,因为目标不同,刷算法的平台和方法也不同. 常见的目标有以下四种: 学习基本编程语法和思想 想找大厂工作,应对面试 算法竞赛 锻炼自己的思维 大 ...

  9. 算法题:10级台阶,一次一步或两步,打印所有的走法

    算法题:10级台阶,一次一步或两步,打印所有的走法. 此题本质是一个数学排列题,但做了一个变化,根据走法不同,排列不同,当然,这个不重要.(如果换成10个位置,每个位置可放1和2,有多少种放的方法,则 ...

最新文章

  1. android之AlertDialog 点击其它区域自己主动消失
  2. 【学习笔记】生产订单实际价格差异计算
  3. 学会用各种方式备份MySQL数据库
  4. RAC IP 地址修改
  5. php字符串反转abcdefg_php中实现字符串翻转的方法
  6. epoll在ET和LT模式下读写
  7. Android NDK开发之 ARM与NEON指令说明
  8. oracle ogg trail 空间,查找OGG trail file中是否存在相关记录的命令
  9. 2016noip蚯蚓《单调队列》
  10. 河南科技大学计算机科学与技术专业多少分,2016年河南科技大学计算机科学与技术专业在陕西录取分数线...
  11. JDY-31蓝牙模块简单通信
  12. 迅雷一些版本下载链接
  13. 360浏览器html文件无图标,电脑桌面360浏览器图标不见了解决方法图文教程
  14. 【参赛作品31】openGauss和PostgreSQL的源码目录结构对比
  15. The Perfect Man (超完美男人)
  16. 惠普HP Color LaserJet Enterprise MFP M577c 驱动
  17. ICLR 22 GRAPH CONDENSATION FOR GNNS 图压缩工作目前的 第一篇 密歇根州立 CMU Snap
  18. 计算机科学基础大熊猫,大学实验室长什么样? 四川南充300多名小朋友走进西华师大感受生命与科学...
  19. 什么是数据中心SOP、MOP、EOP?
  20. STM32L431低功耗停止模式莫名其妙自动唤醒

热门文章

  1. 使用C#制作Windows窗体应用,实现一个微端下载器功能(多线程/断点续传/微端/下载器)
  2. 机器学习系列 五 Classification 分类
  3. 帝国cms百度小程序源码下载
  4. 使用VBA在Office中输入特殊字符(续)
  5. [蓝桥杯][算法提高] 填充蛋糕
  6. GTX650Ti,GT610安装黑苹果之经验与步骤
  7. 弘易信泰,企业级SAAS数据采集技术分析
  8. 老鼠逃出迷宫(递归)
  9. 设计模式之策略模式、观察者模式浅析
  10. 作好项目总结,提高项目管理能力