整数划分(二)
时间限制:
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
-
-
源代码:
//分成两种情况:1.至少有一个盘子中放了一个苹果; 2.每个盘子中苹果个数都大于1个
-
#include <iostream> using namespace std; int fun(int m,int n) { if(m<n) return 0; if(m==n || n==1) return 1; return fun(m-1,n-1)+fun(m-n,n); } int main() { int t,n,m; cin>>t; while(t--) { cin>>m>>n; cout<<fun(m,n)<<endl; } return 0; }
-
第一行是一个整数T表示共有T组测试数据(T<=50)