C ++中的欧拉数
在数学中,欧拉数 是一种特殊的组合数。它定义了排列的数量,其中下一个元素比上一个元素大特定数量。
表示为
A(n,m) 是从1到n的排列,其中两个数字相差m。
问题陈述: 在这个问题上,我们给了两个数字m和n。我们需要找到作为欧拉数的排列数。
让我们举个例子来了解这个问题,
输入: n=4,m=2
输出: 11
解释:
从1到4的所有数字排列都是-
123412431324134214231432
213421432314234124132431
312431423214324134123421
412341324213423143124321
在所有11排列中,有两个数字m之差。
解决方法-
为了找到排列的数量,我们将使用欧拉数的公式,
A(n,m)如果m>n或n=0
A(n,m)=1,则=0,如果m=0
A(n,m)=(nm)A(n-1,m-1)+(m+1)A(n-1,m)
该程序说明了我们解决方案的工作原理,
示例
#include <iostream>
using namespace std;
int countEulerianNumber(int n, int m)
{
if (m >= n || n == 0)
return 0;
if (m == 0)
return 1;
return ( ( (n - m) * countEulerianNumber(n - 1, m - 1) ) + ( (m + 1) * countEulerianNumber(n - 1, m) ) );
}
int main() {
int n = 5, m = 3;
cout<<"欧拉排列的数量是 "<<countEulerianNumber(n, m);
return 0;
}输出-
欧拉排列的数量是 26
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语