(经典) 放苹果 (P 1664 )

来源:互联网 发布:linux保存并退出 编辑:程序博客网 时间:2024/05/16 00:58

这个题,看似简单,却不好下手。得清楚地知道状态转移的情况


#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<vector>#include<cmath>#include<set>#include<cstdlib>#include<cstring>#include<stack>#include<string>using namespace std;int apple(int n,int m){if (n==0)return 1;if (m==1)return 1;if (n<m)return apple(n,n);elsereturn apple(n-m,m)+apple(n,m-1);  //这里是果子放在所有盘子里和至少有一个盘子不放果子的和。}int main(){int i,j,k;int n,m;int cas;cin>>cas;while (cas--){cin>>n>>m;cout<<apple(n,m)<<endl;}}

放苹果
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 20831 Accepted: 13257

Description

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

Input

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

Output

对输入的每组数据M和N,用一行输出相应的K。

Sample Input

17 3

Sample Output

8

Source