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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.