양의 정수 '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]
에 저장된 지금까지 발견된 최대 계수를 반환합니다. -
최소 및 최대 변수를 0으로 초기화합니다. 'min'은 C[][] 배열을 탐색하는 데 사용되며 'max'는 발견된 최대 계수 값을 저장하는 데 사용됩니다.
-
i=0에서 n까지의 For 루프는 C[][] 배열을 초기화하는 데 사용됩니다.
-
이제 다른 for 루프 내부에서 'i' 또는 'n' 중 최소값까지 순회합니다.
-
i==j인 경우. C[i][j]==1. 그렇지 않으면 C[i][j] =C[i-1][j-1] + C[i-1][j];
-
이제 전체 C[][]를 다시 탐색하고 최대 계수를 max에 저장합니다.
-
결과를 반환합니다.
예시
#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