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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP