【发布时间】:2020-05-31 18:45:20
【问题描述】:
我一直在尝试“蛋滴”动态编程问题,但是我真的很困惑为什么答案是有意义的。
这个问题通常用以下方式表述(更长的定义here、here 和here 以及许多其他地方):
您可以从多个楼层掉落鸡蛋。在某些楼层,鸡蛋落地时会没事,而在其他楼层,鸡蛋会破裂。
给定一定数量的鸡蛋和一定数量的地板,找到阈值地板(鸡蛋会破裂的第一层)所需的最小掉落次数是多少
显然这是对问题空间的搜索的答案,它枚举了所有可能性并找到了最坏的情况。
这绝对是我不理解问题的情况,但是为什么这是答案?在我看来,答案是两件事之一:
- 如果您有 1 个鸡蛋,那么无论您拥有多少楼层,您都可能需要从所有楼层(从 1 层开始)掉落它。它打破的第一个是“门槛”,这将为您确认一个答案,因为您知道它下面的每一层都是“安全的”
- 如果你有 n 个鸡蛋,那么答案不是 2:你把它丢了,它就碎了,然后你把它丢在下面的地板上,它不会。
显然 n 个鸡蛋 的答案要求你在两次掉落时都很幸运,但问题是要求找到阈值所需的 最小 次掉落,即最小找到答案并确认所需的可能滴数。如果你碰巧走上了这条黄金之路,那不就是答案 2 吗?
正如我所说,我显然误解了这里的问题 - 有人可以提供帮助吗?
谢谢!
【问题讨论】:
标签: algorithm recursion dynamic-programming