整数划分(二)
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
把一个正整数m分成n个正整数的和,有多少种分法?
例:把5分成3个正正数的和,有两种分法:
1 1 3
1 2 2
-
输入
-
第一行是一个整数T表示共有T组测试数据(T<=50)
每组测试数据都是两个正整数m,n,其中(1<=n<=m<=100),分别表示要拆分的正数和拆分的正整数的个数。
输出
-
输出拆分的方法的数目。
样例输入
-
2 5 2 5 3
样例输出
-
2 2
-
#include <stdio.h> int fun(int n,int m) { if(n < m) return 0; if(n == m) return 1; if(m == 1) return 1; if(n > m) return fun(n-1,m-1) + fun(n-m,m); } int main(void) { int ncase,n,m; scanf("%d",&ncase); while(ncase--) { scanf("%d%d",&n,&m); printf("%d\n",fun(n,m)); } return 0; }
-
-
#include <stdio.h> int a[101][101]; int main(void) { int ncase,m,n; int i,j; a[1][1] = 1; for(i = 2; i < 101; i++) { for(j = 1; j <= i; j++) { a[i][j] = a[i-1][j-1] + a[i-j][j]; } } scanf("%d",&ncase); while(ncase--) { scanf("%d%d",&m,&n); printf("%d\n",a[m][n]); } return 0; }
-
第一行是一个整数T表示共有T组测试数据(T<=50)