DP算法求解组合数C(n,k)

在这里插入图片描述
解决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];

猜你喜欢

转载自blog.csdn.net/m0_51339444/article/details/124366171