C语言中二项式系数最大项的值


给定一个正整数“N”,我们需要找到所有二项式系数中的最大系数项。

二项式系数序列为 nC0, nC1, nC2, …., nCr, …., nCn-2, nCn-1, nCn

nCr 的最大值。

nCr = n! / r! * (n - r)!

输入 − N=4

输出 − 最大系数 − 6

解释4C0= 1, 4C1 = 4, 4C2 = 6, 4C3 = 4, 4C4 = 1

因此,在这种情况下,最大系数为 6。

输入 − N=5

输出 − 最大系数 − 10

解释5C0= 1, 5C1 = 5, 5C2 =10, 5C3 = 10, 5C4 = 5, 5C5 = 1

因此,在这种情况下,最大系数为 10。

下面程序中使用的算法如下

  • 我们从用户那里获取 N 的输入。

  • 函数 maxCoeff(int n) 接收一个参数 'n' 并返回存储在 C[n+1][n+1] 中当前找到的最大系数。

  • 用 0 初始化 min 和 max 变量。'min' 用于遍历 C[][] 数组,'max' 用于存储找到的最大系数值。

  • 使用从 i=0 到 n 的 for 循环来初始化 C[][] 数组。

  • 现在在另一个 for 循环中遍历直到 'i' 或 'n',取较小值。

  • 如果 i==j,C[i][j]==1,否则 C[i][j] = C[i-1][j-1] + C[i-1][j];

  • 现在再次遍历整个 C[][] 并将最大系数存储在 max 中。

  • 返回结果。

示例

 在线演示

#include <stdio.h>
int maxCoeff(int n){
   int C[n+1][n+1];
   int max=0,min=0;
   // Calculate value of Binomial Coefficient in
   for (int i = 0; i <= n; i++){
      min=i<n?i:n;
      for (int j = 0; j <= min; j++){
         if (j == 0 || j == i)
            C[i][j] = 1;
         else
            C[i][j] = C[i-1][j-1] + C[i-1][j];
      }
   }
   for (int i = 0; i <= n; i++){
      max = max> C[n][i] ? max: C[n][i];
   }
   return max;
}
int main(){
   int N = 3;
   printf("Maximum Coefficient :%d", maxCoeff(N) );
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Maximum Coefficient: 3

更新于:2020年8月17日

146 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告