# 9. 沙漏计时问题
描述:你有一个 6 分钟 和一个 8 分钟 的沙漏,如何利用它们精准计时 10 分钟?
# 分析问题
沙漏的基本操作:
- 翻转:沙漏可以随时翻转,使沙子重新流动。
- 暂停:可以在特定时间点观察沙漏状态,来控制计时。
- 同步使用:可以同时启动两个沙漏,观察它们的相对状态来确定时间点。
目标:精准计时 10 分钟,需要找到合理的翻转时机。
# 解法
# 步骤 1:同时启动两个沙漏
- 开始时,同时翻转 6 分钟沙漏 和 8 分钟沙漏。
- 当 6 分钟沙漏流完 时,说明已经过去了 6 分钟,此时 8 分钟沙漏还剩 2 分钟的沙子。
# 步骤 2:翻转 6 分钟沙漏
- 6 分钟沙漏用完的瞬间(6 分钟时刻),立即翻转它,重新开始计时。
- 同时等待 8 分钟沙漏流完(此时总共已经过去 8 分钟)。
# 步骤 3:8 分钟后,6 分钟沙漏还剩 4 分钟的沙子
- 8 分钟到达时,6 分钟沙漏刚翻转过 2 分钟,因此它还剩 4 分钟的沙子。
- 这 4 分钟的沙子 继续流完,总共经过 10 分钟。
✅ 最终,成功计时 10 分钟!
# 时间轴示意
时间点 | 6 分钟沙漏 | 8 分钟沙漏 | 事件 |
---|---|---|---|
0 min | 开始 | 开始 | 同时翻转两只沙漏 |
6 min | 空 | 还剩 2 分钟 | 翻转 6 分钟沙漏 |
8 min | 还剩 4 分钟 | 空 | 8 分钟沙漏流完 |
10 min | 空 | 空 | 6 分钟沙漏流完,计时结束 ✅ |
# 推广思考
如何计时 4 分钟?
- 先让 6 分钟沙漏流完,然后翻转它,此时沙漏里有 2 分钟的沙子。
- 当 8 分钟沙漏流完时(总共 8 分钟),6 分钟沙漏还剩 4 分钟的沙子,让它继续流完即可。
如果有 7 分钟和 11 分钟的沙漏,如何计时 10 分钟?
- 先让 7 分钟沙漏流完,同时 11 分钟沙漏还剩 4 分钟。
- 翻转 7 分钟沙漏,再等 4 分钟,共计 10 分钟。
如何用程序模拟沙漏计时?
- 可以用 两个计时变量 模拟流沙状态,并在特定时间点执行翻转操作。
- 使用 BFS/DFS 搜索状态变化,找出满足目标时间的最优策略。
# 相关面试题
- 如果沙漏分别是 9 分钟和 12 分钟,如何计时 15 分钟?
- 如何用两个沙漏找出它们的最小公倍数(LCM)?
- 如何用沙漏计时非整分钟(如 7.5 分钟)?
这道题考察了 时间管理、数学推理、状态转换思维,是一道 经典的逻辑推理面试题!
← 14. 水桶测量问题 16. 电梯钻石问题 →