C程序找到nCr和nPr.排列组合

在C编程语言中,nCr被称为组合。nCr是从n个对象集中选择r个对象,其中对象的顺序无关紧要。

nPr称为置换。nPr是一组“ n”个对象中“ r”个对象的排列,其顺序或顺序应相同。

排列和组合公式

在C语言中找到给定数字的排列和组合的公式如下-

  • nCr = n!/(r!*(nr)!)

  • nPr = n!/(nr)!。

查找nCr的逻辑如下-

result = factorial(n)/(factorial(r)*factorial(n-r));

查找nPr的逻辑如下-

result = factorial(n)/factorial(n-r);

示例

以下是C程序来查找给定数字的排列和组合-

#include <stdio.h>
long factorial(int);
long find_ncr(int, int);
long find_npr(int, int);
int main(){
   int n, r;
   long ncr, npr;
   printf("Enter the value of n and r\n");
   scanf("%d%d",&n,&r);
   ncr = find_ncr(n, r);
   npr = find_npr(n, r);
   printf("%dC%d = %ld\n", n, r, ncr);
   printf("%dP%d = %ld\n", n, r, npr);
   return 0;
}
long find_ncr(int n, int r) {
   long result;
   result = factorial(n)/(factorial(r)*factorial(n-r));
   return result;
}
long find_npr(int n, int r) {
   long result;
   result = factorial(n)/factorial(n-r);
   return result;
}
long factorial(int n) {
   int c;
   long result = 1;
   for (c = 1; c <= n; c++)
   result = result*c;
   return result;
}

输出结果

执行以上程序后,将产生以下输出-

Enter the value of n and r
5 2
5C2 = 10
5P2 = 20