Cho số nguyên dương 'N'. Tìm hệ số nhị thức lớn nhất trong tất cả các hệ số.
Dãy hệ số nhị thức: nC0, nC1, nC2, ..., nCr, ..., nCn-2, nCn-1, nCn.
Tìm giá trị lớn nhất của nCr.
nCr = n! / (r! * (n - r)!)
Đầu vào - N=4
Đầu ra - Hệ số lớn nhất = 6
Giải thích - 4C0=1, 4C1=4, 4C2=6, 4C3=4, 4C4=1. Max = 6.
Đầu vào - N=5
Đầu ra - Hệ số lớn nhất = 10
Giải thích - 5C0=1, 5C1=5, 5C2=10, 5C3=10, 5C4=5, 5C5=1. Max = 10.
Phương pháp chương trình
Nhập N từ người dùng.
Hàm maxCoeff(int n) trả về hệ số lớn nhất tìm được lưu trong C[n+1][n+1].
Khởi tạo min, max = 0. 'min' dùng duyệt C[][], 'max' lưu giá trị max.
Vòng lặp i=0 đến n khởi tạo C[][].
Vòng lặp trong duyệt đến min(i, n).
Nếu i==j, C[i][j]=1. Ngược lại C[i][j] = C[i-1][j-1] + C[i-1][j].
Duyệt C[][] lưu max.
Trả về kết quả.
Ví dụ
#include <stdio.h>
int maxCoeff(int n) {
int C[n+1][n+1];
int max = 0, min = 0;
// Tính hệ số nhị thức
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("He so lon nhat: %d", maxCoeff(N));
return 0;
}
Kết quả
Chạy code cho đầu ra:
He so lon nhat: 3