Chúng ta được cho với một số nguyên dương ‘N’. Chúng ta phải tìm số hạng hệ số lớn nhất trong tất cả các hệ số của nhị thức.
Chuỗi hệ số nhị thức là n C 0 , n C 1 , n C 2 ,…., n C r ,…., n C n-2 , n C n-1 , n C n
tìm giá trị lớn nhất của n C r .
nCr = n! / r! * (n - r)!
Đầu vào - N =4
Đầu ra - Hệ số tối đa - 6
Giải thích - 4 C 0 =1, 4 C 1 =4, 4 C 2 =6, 4 C 3 =4, 4 C 4 =1
Do đó, hệ số tối đa trong trường hợp này là 6.
Đầu vào - N =5
Đầu ra - Hệ số tối đa - 10
Giải thích - 5 C 0 =1, 5 C 1 =5, 5 C 2 =10, 5 C 3 =10, 5 C 4 =5, 5 C 5 =1
Do đó, hệ số tối đa trong trường hợp này là 10.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Chúng tôi lấy thông tin đầu vào từ người dùng cho N.
-
Hàm maxCoeff (int n) nhận một tham số ‘n’ và trả về hệ số tối đa được tìm thấy cho đến nay được lưu trữ trong C [n + 1] [n + 1]
-
Khởi tạo các biến tối thiểu và tối đa bằng 0. ‘min’ được sử dụng để duyệt qua mảng C [] [] và ‘max’ được sử dụng để lưu trữ giá trị hệ số lớn nhất được tìm thấy.
-
Vòng lặp for từ i =0 đến n được sử dụng để khởi tạo mảng C [] [].
-
Bây giờ bên trong một vòng lặp for khác đi qua cho đến khi ‘i’ hoặc ‘n’, tùy theo giá trị nào là nhỏ nhất.
-
Nếu tôi ==j. C [i] [j] ==1. else C [i] [j] =C [i-1] [j-1] + C [i-1] [j];
-
Bây giờ, duyệt lại toàn bộ C [] [] và lưu trữ hệ số tối đa ở mức tối đa.
-
Trả lại kết quả.
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Maximum Coefficient: 3