Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C의 최대 이항 계수 항 값


양의 정수 '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