组合数计算--动态规划

贴一个板子(之前快手笔试的时候写错了..奇耻大辱)

先给出两个公式:$C^{n}_{m} = \frac{m!}{m!(m-n)!}$以及 $C^{n}_{m} = C^{n-1}_{m-1} + C^{n}_{m-1}$

计算代码如下:

int mat[1001][1001];
int combinat(int m, int n) {
   for(int j=0;j<=n;i++) mat[0][j] = 0;
   // n <=  m  所以只需要计算n列就可以了
   for(int j=0;j<=n;j++)
   {
       mat[j][j] = 1;
       for(int i=j+1;i<=m;i++)
       {
           if(j == 0) mat[i][j] = 1;
           else mat[i][j] = mat[i-1][j-1] + mat[i-1][j];
       }
   }


    return mat[m][n];
}

 

猜你喜欢

转载自www.cnblogs.com/z1141000271/p/12796968.html
今日推荐