问题描述:
有N笔贷款,每笔贷款违约的概率为 [p1、p2、p3 ... ... pn]
,求恰好有K
笔贷款违约的概率。
问题分析:
这是研究生学长在今日头条校招遇到的面试题,想了两天才想清楚是怎么回事,本题用动态规划来做。
以下是学长给出的思路和问题分析:
现在直接给出递推方程式,然后再去解读:
*dp[k][n] = dp[k][n−1]∗(1−pn) + dp[k−1][n−1]∗pn*
dp[k][n]
表示,有n笔贷款时,恰好有k次违约的概率,这个值怎么求那?可以从子问题入手,要想得到这个值,不难发现有两个方向:
(1)dp[k][n-1]
表示有n-1
笔贷款时,恰好有k
次违约的概率,现在已经恰好k
次了,那么新来的那个贷款pn
没有违约就可以继续保持k
次了,所以是:
* dp[k][n−1] ∗ (1−pn)
(2)dp[k-1][n-1]
表示有n-1
笔贷款时,恰好有k-1
次违约的概率,现在是恰好k-1
次,那么新来的那个贷款pn
违约了,不就是k
次了吗,所以是: