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]

  • เริ่มต้นตัวแปร min และ max ด้วย 0 'min' ใช้เพื่อสำรวจอาร์เรย์ C[][] และ 'max' ใช้เพื่อเก็บค่าสัมประสิทธิ์สูงสุดที่พบ

  • สำหรับการวนซ้ำจาก i=0 ถึง n ใช้เพื่อเริ่มต้นอาร์เรย์ C[][]

  • ตอนนี้อยู่ในอีกอันหนึ่งเพื่อวนซ้ำจนถึง 'i' หรือ 'n' แล้วแต่จำนวนใดจะต่ำสุด

  • ถ้า i==j. C[i][j]==1. อื่น C[i][j] =C[i-1][j-1] + C[i-1][j];

  • ตอนนี้สำรวจ C[][] ทั้งหมดอีกครั้งและเก็บค่าสัมประสิทธิ์สูงสุดไว้ที่ค่าสูงสุด

  • ส่งคืนผลลัพธ์

ตัวอย่าง

#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