Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Giá trị hệ số nhị thức lớn nhất trong C


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