POJ-1664 放苹果
2015-08-08 17:45
399 查看
放苹果
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
Sample Output
Source
下面的解析,引自http://blog.sina.com.cn/s/blog_9790f4e20100xav3.html
(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。
(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘子里,结果都算一个。
(3):当m<n时,因为此时最多只能放到m个盘子中去(一个里放一个),实际上就相当于把m个苹果放到m个盘子里一样,也就是f(m,m);
(4):当m==n时,此时分两种情况讨论,一种是一个盘子里放一个,只是一种,第二种是,至少有一个盘子里不放苹果这就相当于是f(m,m-1);
(5):当m>n时,也分两种情况讨论,一种是至少有一个盘子里不放苹果,这样子就相当于f(m,n-1),第二种是,先取出n个苹果一个盘子里放一个,再将剩下的m-n个苹果放到n个盘子里去,即f(m-n,n);
综上所述:
得到递归表达式:
f(m,n)=1 当 m=1或n=1;
f(m,n)=f(m,m) 当m<n;
f(m,n)=1+f(m,m-1) 当m=n;
f(m,n)=f(m-n,n)+f(m,n-1);
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 28356 | Accepted: 17939 |
把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
1 7 3
Sample Output
8
Source
#include <stdio.h> int f(int m,int n) { if(m==0||n==1) return 1; if(m<0) return 0; return f(m-n,n)+f(m,n-1); } int main() { int t,m,n; scanf("%d",&t); while(t--) { scanf("%d %d",&m,&n); printf("%d\n",f(m,n)); } return 0; }
下面的解析,引自http://blog.sina.com.cn/s/blog_9790f4e20100xav3.html
(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。
(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘子里,结果都算一个。
(3):当m<n时,因为此时最多只能放到m个盘子中去(一个里放一个),实际上就相当于把m个苹果放到m个盘子里一样,也就是f(m,m);
(4):当m==n时,此时分两种情况讨论,一种是一个盘子里放一个,只是一种,第二种是,至少有一个盘子里不放苹果这就相当于是f(m,m-1);
(5):当m>n时,也分两种情况讨论,一种是至少有一个盘子里不放苹果,这样子就相当于f(m,n-1),第二种是,先取出n个苹果一个盘子里放一个,再将剩下的m-n个苹果放到n个盘子里去,即f(m-n,n);
综上所述:
得到递归表达式:
f(m,n)=1 当 m=1或n=1;
f(m,n)=f(m,m) 当m<n;
f(m,n)=1+f(m,m-1) 当m=n;
f(m,n)=f(m-n,n)+f(m,n-1);
相关文章推荐
- scala学习:Scala文件的读取、写入、控制台输入操作代码
- [iOS-Swift编程]Method '...' with Objective-C selector '...' 错误的解决方法
- 1691: CZY追女孩
- 9.9递归和动态规划(二)——有个机器人坐在X*Y网格的左上角,只能向右、向下移动,机器人从(0,0)到(X,Y)有多少种走法
- 9.9递归和动态规划(一)——小孩上楼梯的方式的种类
- 使用StoryBoard做IOS UI界面跳转
- 第十三章创建与维护表
- MySQL常用语法
- Java出现No enclosing instance of type ImageViewer is accessible. Must qualify the allocation with an
- JS实现动态添加图片上传,多个单图添加
- 一道签到题
- Hive安装及基础知识总结
- hdoj 2102 A计划
- 代码优化:性能优化不是丑陋代码的遮羞布!
- HDU-OJ-1017 A Mathematical Curiosity-整数对
- ssh登陆提示"Host key verification failed."的解决方法
- 位运算
- UVA 11624
- hdoj-1686 Oulipo
- HTML5的canvas实现一个球的左右移动