组合数计算--动态规划
贴一个板子(之前快手笔试的时候写错了..奇耻大辱)
先给出两个公式:$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]; }