题目描述:
表示从m个元素中取n个的组合数,又知
即:C(m,n)=C(m-1,n)+C(m-1,n-1);
C(m,m)=1; (边界条件 m=n)
C(m,1)=m; (边界条件 n=1)
请递归求出组合问题的解
输入格式:
只有一行,为两个正整数,m,n.(0<m,n<=20)
输出格式:
只有一行,为C(m,n)的值
样例输入:
19 9
样例输出:
92378
时间限制: 1000ms
空间限制: 128MB
每次递归调用两次函数,可以用记忆化搜索优化重复计算的部分(我是懒得弄)。
代码实现:
#include<bits/stdc++.h>
using namespace std;
long long m,n;
long long c(long long n,long long m){
if(n==m)return 1;
if(m==1)return n;
return c(n-1,m)+c(n-1,m-1);
}
int main(){
cin>>n>>m;
cout<<c(n,m);
return 0;
}