1.链接地址:

http://bailian.openjudge.cn/practice/1664

http://poj.org/problem?id=1664

2.题目:

总时间限制:
1000ms
内存限制:
65536kB
描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
输入
第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
输出
对输入的每组数据M和N,用一行输出相应的K。
样例输入
1
7 3
样例输出
8
来源
lwx@POJ

3.思路:

4.代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 int f(int m,int n)
 7 {
 8     if(n == 1 || m == 0) return 1;
 9     else if(m < n) return f(m,m);
10     else return f(m,n - 1) + f(m - n,n);
11 }
12 
13 
14 int main()
15 {
16     //freopen("C:\\Users\\wuzhihui\\Desktop\\input.txt","r",stdin);
17 
18     int t;
19     cin>>t;
20     
21     int m,n;
22     while(t--)
23     {
24         cin>>m>>n;
25         cout<<f(m,n)<<endl;
26     }
27     return 0;
28 }

 

posted on 2014-02-18 22:22  mobileliker  阅读(258)  评论(0编辑  收藏  举报