计算组合数

女爷i 2022-07-14 15:23 302阅读 0赞

Problem 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)。

Example Input

  1. 3
  2. 2 1
  3. 3 2
  4. 4 0

Example Output

  1. 2
  2. 3
  3. 1
  4. #include<stdio.h>
  5. int k[21][21]={0};
  6. int c (int n,int m)
  7. {
  8. if(m==0||n==1||m==n)
  9. {
  10. return 1;
  11. }
  12. else
  13. {
  14. if(k[n][m]==0)
  15. return k[n][m]=c(n-1,m-1)+c(n-1,m);
  16. else
  17. return k[n][m];
  18. }
  19. } int main()
  20. {
  21. int t,n,m;
  22. int k;
  23. scanf("%d",&t);
  24. while(t--)
  25. {
  26. scanf("%d%d",&n,&m);
  27. k=c(n,m);
  28. printf("%d\n",k);
  29. }
  30. return 0;
  31. }

发表评论

表情:
评论列表 (有 0 条评论,302人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算组合

    Problem Description 计算组合数。C(n,m),表示从n个数中选择m个的组合数。 计算公式如下: 若:m=0,C(n,m)=1 否则, 若

    相关 组合

    组合数 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)