เราได้รับเป็นจำนวนเต็มบวก '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