当前位置: 首页 > 编程笔记 >

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

连鸿
2023-03-14
本文向大家介绍C程序找到nCr和nPr.排列组合,包括了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
 类似资料:
  • 大家好,我对C编码很陌生,但我正在学习这门课程。 我想写一段代码,找出数组中r个元素的组合,然后对结果进行置换。 我已经能够从各种来源进行研究,并有单独的代码,将打印组合和排列的数组。 我面临的挑战是如何将两个代码结合起来并使其作为一个整体工作。 第一个代码用于 5 个元素数组的组合,其中一次选择 4 个元素。 第二个代码是排列数组组合(前一个代码)的每个结果,这意味着4个元素的排列。在下面的这段

  • 主要内容:SortedList 类的中的属性,SortedList 类的中的方法在 C# 中,SortedList 类用来表示键/值对的集合,这些键/值对按照键值进行排序,并且可以通过键或索引访问集合中的各个项。 我们可以将排序列表看作是数组和哈希表的组合,其中包含了可以使用键或索引访问各项的列表。如果您使用索引访问各项,那么它就是一个动态数组(ArrayList),如果您使用键访问各项,那么它就是一个哈希表(Hashtable)。另外,集合中的各项总是按键值进行排序。 So

  • 是的,我听过RTFM。或者,在这种情况下,RTFSO。如果它出现在“npr”或“排列”的搜索结果中,我会阅读它。虽然我已经实现了Heap的算法,但我不能从那里(所有排列)跳到nPr(一个更大的集合n中长度为r的所有排列)。 一个实际的算法(伪代码也可以)比一个不包括实际代码的冗长解释更受欢迎。如果你想教我理论,好吧,我很乐意从中学习,但我也想要附带的代码。如果你能把Heap的术语放进去,太好了;否

  • 问题内容: 给定以下数据框 我想按的总和对分组()进行排序,然后按(不对)的值进行分组。所以基本上得到组的顺序 然后通过对/错,最终看起来像这样: 如何才能做到这一点? 问题答案: Groupby A: 在每个组中,对B求和,然后使用transform广播值。然后按B排序: 通过从上方传递索引来索引原始df。这将按B值的总和对A值重新排序: 最后,使用选项保留“ A”组中的“ C”值,以保留步骤1

  • 有人能提供帮助,如何检查排序降序数组以及?干杯!

  • 本文向大家介绍C#查找字符串所有排列组合的方法,包括了C#查找字符串所有排列组合的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#查找字符串所有排列组合的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。