7-1 sdut-C语言实验-计算组合数
分数 20
全屏浏览
切换布局
作者 马新娟
单位 山东理工大学
计算组合数。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)
###输入格式:
第一行是正整数N (1 <= N<= 100),表示有N组要求的组合数。
接下来N行,每行两个整数n,m (0 <= m <= n <= 20)。
###输出格式:
输出N行。每行输出一个整数表示C(n,m)。
###输入样例:
1. 3 2. 2 1 3. 3 2 4. 4 0
###输出样例:
1. 2 2. 3 3. 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h> #include <stdlib.h> #include <math.h> int f(int n, int m); int main() { int t, m, n, res; scanf("%d", &t); for (int i = 0; i < t; i++) { scanf("%d %d", &n, &m); res = f(n, m); printf("%d\n", res); }//max return 0; } int f(int n, int m) { if (m == 0 || n == 1 || m == n) return 1; return f(n-1, m-1) + f(n-1, m); }