主和数
从m个不同元素中,任取n(n≤m)个元素并成一组,叫做从m个不同元素中取出n个元素的一个组合;从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。
1.基本公式
#include<iostream>
using namespace std;
int Power(int n)
{
int c=1;
for(int i=1;i<=n;i++)
{
c=c*i;
}
return c;
}
int main()
{
int x,y,m,n;
cin>>m>>n;
y=m-n;
x=Power(m)/(Power(n)*Power(y));
cout<<x<<endl;
}
2.递推式1
#include<iostream>
using namespace std;
int C(int n,int m)
{
if(n==m||m==0)return 1;
else return C(n-1,m)+C(n-1,m-1);
}
int main()
{
cout<<C(5,3);
}
递推式2
#include<iostream>
using namespace std;
double C(int n,int m)
{
if(n==m||m==0)return 1;
else return C(n,m-1)*(n-m+1)/m;
}
int main()
{
cout<<C(5,3);
}
组合数
```cpp
ll C(int a,int b)
{
ll res=1;
for(int i=a,j=1;j<=b;i--,j++)
{
res=res*i/j;
}
return res;
}