本来感觉是个难题,突然恍然大悟,发现这种类型的题以前做过,实际上期望并不难算。
问题描述
有n种类型的邮票,问将所有的类型的邮票全部收集起来所要的收集次数期望是多少。
算法
我们可以设dp[i]为已经收集了i种类型的票,还要收集n-i种的次数的期望。
那么显然dp[n]=0;
递推式子有:
dp[i]=dp[i+1]∗(n−i)/n+dp[i]∗i/n+1
d
p
[
i
]
=
d
p
[
i
+
1
]
∗
(
n
−
i
)
/
n
+
d
p
[
i
]
∗
i
/
n
+
1
化简可得
dp[i]=dp[i+1]+n/(n−i)
d
p
[
i
]
=
d
p
[
i
+
1
]
+
n
/
(
n
−
i
)
再化简,公式就很显然了。
dp[0]=n(1/n+1/(n−1)+...+1/1)
d
p
[
0
]
=
n
(
1
/
n
+
1
/
(
n
−
1
)
+
.
.
.
+
1
/
1
)