【发布时间】:2016-07-21 06:40:57
【问题描述】:
我已经盯着这个问题看了好几个小时,但我仍然像刚开始时一样迷茫。自从我学习离散数学或统计数据以来已经有一段时间了,所以我尝试在 youtube 上观看一些视频,但我找不到任何可以帮助我在比指数时间更短的时间内解决问题的东西。非常感谢任何有关如何解决以下问题的提示!
某种蕨类植物在郁郁葱葱的多雨地区茁壮成长,那里几乎每天都会下雨。 然而,预计未来 n 天会发生干旱,一个植物学家团队担心 物种在干旱中的生存。具体来说,团队确信以下几点 假设:当且仅当至少 n/2 天下雨时,蕨类植物种群才能生存 n 天干旱。换句话说,要让物种生存下去,至少要有同样多的雨天 作为非雨天。 当地气象专家预测,某天下雨的概率 i ∈ {1, . . . , n} 是 pi ∈ [0, 1],并且这 n 个随机事件是独立的。假设植物学家和 气象专家是正确的,展示了如何计算蕨类植物在干旱中存活的概率。 你的算法应该在 O(n2) 时间内运行。
【问题讨论】:
-
这很简单。 “下雨会超过 n/2 天吗?”的递归。是“(今天下雨的概率 * 剩余几天中下雨 n/2-1 天的概率)+(今天不下雨的概率 * 剩余几天中下雨 n/2 天的概率)” .显然,计算中的两个分支有很多重叠。例如,可以设置 dp 矩阵,以便 DP[i][j] 存储剩余 j 天 i 天下雨的概率。
-
我想我开始掌握它了。非常感谢!
-
不客气。我还为另一个流行的入门级 DP 问题here 编写了一个详尽的类似教程的答案,您可能会觉得它很有教育意义。
标签: algorithm