原题
Description
计算组合数。C(n,m),表示从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).Input
第一行是正整数N,表示有N组要求的组合数。接下来N行,每行两个整数n,m (0 <= m <= n <= 20)。Output
输出N行。每行输出一个整数表示C(n,m)。思路
这个。。。直接写就能AC。。。
有点方。。。开始一个劲想着优化结果各种错。。AC代码
#include<bits/stdc++.h>
using namespace std;
int c(int n,int m)
{
if(m==0)
return 1;
else if(n==1||m==n)
return 1;
else
return (c(n-1,m-1)+c(n-1,m));
}
int main()
{
int n,m,i;
int rev;
cin>>i;
for(;i>0;i--)
{
cin>>n>>m;
rev=c(n,m);
cout<<rev<<endl;
}
}