用动态规划解决排列组合和概率问题
动态规划是什么?
baike.baidu.com/item/动态规划/529408?fr=aladdin
能用动态规划解决的问题必须满足未来与过去无关
例1
甲乙丙三个人传球,现在球在甲手上,经过5次传球(球不能自己传给自己),问最终球传回甲手里的路径数目。
先来看看一般的方法是怎么做的

一条条数呗,总共10条。如果经过稍微优化,可以将乙和丙合并成一条权重为2的路径

稍微优化的算法,得到路径数目为2x(2+1+2)=10
然而即使经过优化,此算法在传递次数更大的情况仍麻烦。
那就有请我们的动态规划(DP)上场
得状态转移方程

观察表格得到规律:传到甲手里得路径数总是和其他人相差1
当i为偶数时,甲多1;当i为奇数时,甲少1;
得到通项公式
进而无论传几次,传到谁手里,方案数都能很快地算出来。
容易推广到m个人,传n次,传到自己手里的路径数
传到别人手里的路径数
加强1
甲乙丙丁戊……共11人,球在甲手里,经过100次传球(球不能自己传给自己),问最终球传回甲手里的路径数目。

答案:
例2 甲乙丙丁戊五个桶,甲最多能装5个球,乙最多能装8个球,丙最多能装11个球,丁最多7,戊最多3,现有17个完全相同的小球,问装进5个桶中的方案数量(可空桶)。
先假设它没有最大限制吧
削弱1 甲乙丙丁戊五个桶,现有17个完全相同的小球,问装进5个桶中的方案数量(可空桶)。
答案是=5985
如果用动态规划解决呢?
将甲、乙、丙、丁、戊编号为1、2、3、4、5
状态转移方程

细心的人已经发现了,这就是杨辉三角的表格版。用了DP反而更加麻烦了
那么有了最大限制呢?
传统的办法是分类讨论,其实这已经类似于DP了。
DP解法:将甲、乙、丙、丁、戊编号为1、2、3、4、5
状态转移方程

得到最终答案1486
如果在考试的时候遇到这么死妈的题,强烈建议DP,空间换取时间
例3
M,N两个暗箱。M中有3个黑球,N中有三个白球。将 “M,N各取一球并放到对方的箱子中” 执行6次,问最终M箱含3个白球的概率。
先把M和N可能的状态列出来并标号,用(a,b)表示a个黑球,b个白球
X只是一个代号,表示M和N所处的状态。

用表示经过
次操作后M和N的状态(特别地,
为初态)

图中红色的4表示=1时
=2的权重为4,即概率为
先来试试传统的枚举法

得到
枚举法太容易漏情况了,我之前做就漏了俩个。
然后是动态规划的方法

得到
最后留一个题哈,我没时间写了,过两个周回来再发答案
加强2 M、N两个暗箱。M中有2个红球,1个黄球;N中有1个黄球,3个蓝球。将 “M、N各取一个球放到对方箱子中” 执行5次。求最终M箱含1个红球,2个蓝球的概率。