解决DP问题最重要的两个环节就是求规划方程和边界条件:
(1)规划方程为:C[i, j] = C[i - 1, j - 1] + C[i - 1, j]
(2)边界条件为:如果 j 为 0 或者 j = i 时,组合数为1
算法 Binomial(n,k)
//用动态规划算法计算C(n,k)
//输入:一对非负整数n≥k ≥0
//输出:C(n,k)的值
for(i ⬅ 0; i <= n; ++i)
for(j ⬅ 0; j <= min(i, k); ++j)
if(j = 0 || j = i) C[i, j] = 1;
else C[i, j] = C[i - 1, j - 1] + C[i - 1, j];
Return C[n,k];