生活中的数据结构
题目:话说有1000个瓶子,其中999瓶水,1瓶有毒,外观没有任何区别。现在有10只小白鼠和无限多的干净试管,如何找出那瓶毒药?
知识点:就是二分法的应用
分析:由于2^10 > 1000,因此可以这样解决:
第一次:任意拿出500瓶混合到一支试管中,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪500瓶中;最多耗费第一只小白鼠;2
第二次:将有毒的500瓶分成250瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪250瓶中;最多耗费第二只小白鼠;2
第三次:将有毒的250瓶分成125瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪125瓶中;最多耗费第三只小白鼠;2
第四次:将有毒的125瓶分成63瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪63瓶中;最多耗费第四只小白鼠;2
第五次:将有毒的63瓶分成32瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪32瓶中;最多耗费第五只小白鼠;2
第六次:将有毒的32瓶分成16瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪16瓶中;最多耗费第六只小白鼠;2
第七次:将有毒的16瓶分成8瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪8瓶中;最多耗费第七只小白鼠;2
第八次:将有毒的8瓶分成4瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪4瓶中;最多耗费第八只小白鼠;2
第九次:将有毒的4瓶分成22瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪2瓶中;最多耗费第九只小白鼠;2
第十次:将有毒的2瓶分成1瓶一份,拿一只小白鼠试吃,两种结果,有毒鼠死,无毒鼠活;无论结果如何,都可以判断出毒药在哪1瓶中;最多耗费第十只小白鼠;2
递归算法其实就是:
if()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具