เราได้รับเป็นจำนวนเต็มบวก 'N' เราต้องหาค่าสัมประสิทธิ์สูงสุดของสัมประสิทธิ์ทวินามทั้งหมด
อนุกรมสัมประสิทธิ์ทวินามคือ n C0 , n C1 , n C2 , …., n Cr , …., n Cn-2 , n Cn-1 , n Cn
หาค่าสูงสุดของ n Cr .
nCr = n! / r! * (n - r)!
ป้อนข้อมูล − N=4
ผลผลิต − ค่าสัมประสิทธิ์สูงสุด − 6
คำอธิบาย − 4 C0 =1, 4 C1 =4, 4 C2 =6, 4 C3 =4, 4 C4 =1
ดังนั้นค่าสัมประสิทธิ์สูงสุดในกรณีนี้คือ 6
ป้อนข้อมูล − N=5
ผลผลิต − ค่าสัมประสิทธิ์สูงสุด − 10
คำอธิบาย − 5 C0 =1, 5 C1 =5, 5 C2 =10, 5 C3 =10, 5 C4 =5, 5 C5 =1
ดังนั้นค่าสัมประสิทธิ์สูงสุดในกรณีนี้คือ 10
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เรารับข้อมูลจากผู้ใช้สำหรับ N.
-
ฟังก์ชัน maxCoeff(int n) รับพารามิเตอร์หนึ่งตัว 'n' และคืนค่าสัมประสิทธิ์สูงสุดที่พบใน C[n+1][n+1]
-
เริ่มต้นตัวแปร min และ max ด้วย 0 'min' ใช้เพื่อสำรวจอาร์เรย์ C[][] และ 'max' ใช้เพื่อเก็บค่าสัมประสิทธิ์สูงสุดที่พบ
-
สำหรับการวนซ้ำจาก i=0 ถึง n ใช้เพื่อเริ่มต้นอาร์เรย์ C[][]
-
ตอนนี้อยู่ในอีกอันหนึ่งเพื่อวนซ้ำจนถึง 'i' หรือ 'n' แล้วแต่จำนวนใดจะต่ำสุด
-
ถ้า i==j. C[i][j]==1. อื่น C[i][j] =C[i-1][j-1] + C[i-1][j];
-
ตอนนี้สำรวจ C[][] ทั้งหมดอีกครั้งและเก็บค่าสัมประสิทธิ์สูงสุดไว้ที่ค่าสูงสุด
-
ส่งคืนผลลัพธ์
ตัวอย่าง
#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