1.题目描述
计算组合数,从n个数中选m个的组合数
若:m=0,C(n,m)=1
否则, 若 n=1,C(n,m)=1
否则,若m=n,C(n,m)=1
否则 C(n,m) = C(n-1,m-1) + C(n-1,m).
2.思路分析
其实也没有什么思路,就是用递归的形式将式子表示出来。
3.代码
#include<iostream>
#include<vector>
using namespace std;
int fun(int a,int b)
{
int x;
if(a==b)
return 1;
else if(a==1)
return 1;
else if(b==0)
return 1;
else
x=fun(a-1,b-1)+fun(a-1,b);
return x;
}
int main()
{
int a,b,n,i;
vector<int>p;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a>>b;
p.push_back(fun(a,b));
}
for(i=0;i<n;i++)
cout<<p[i]<<endl;
return 0;
}
4.感想
注意细节,思路很简单,就是训练手速的