A 冰箱有 a 瓶,B 冰箱有 b 屏,在 A 、B 冰箱中有可乐的冰箱中等概率取一瓶,最后 B 冰箱剩余 1 瓶的概率。
解:
设目标概率函数为: P(a, b)
由题目理解可得:
1. 当 a>0, b>0 时:
P(a, b) = 0.5 * P(a - 1, b) + 0.5 * P(a, b - 1)
2. 当 a=0 或 b=0 时:
P(a, 0) = 0
P(0, b) = 1
题目可由动态规划得:
```python
import functools.lru_cache
@
lru_cachedef p(a, b):
if a and b:
return 0.5 * p(a - 1, b) + 0.5 * p(a, b - 1)
else:
return 1 if b else 0
```
时间复杂度 O(a*b)
空间复杂度 O(a*b)
本机运行结果:
```
>> timeit p(30, 31)
0.5512890865042848
578 µs ± 11.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```
另外:31/61 = 0.5081967213114754