整数划分(二)
时间限制:
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)