Bailian1664 Placing apples【递推+记忆化递归】
1664:Placing apples
总时间限制: 1000ms 内存限制: 65536kB
描述
We are going to place M same apples into N same plates.
There could be some empty plates.
How many methods do we have?
When we have 7 applesand 3 plates, the methods, (1, 5, 1) and (5, 1, 1) are the same.
输入
The first line is the number of test cases, t. 0<=t<=20
The next t lines are test cases containing two numbers, M and N. 1<=M, N<=10.
输出
Output the numbers of method in each test case in one line.
样例输入
1
7 3
样例输出
8
问题链接:Bailian1664 Placing apples
问题描述:(略)
问题分析:
这个问题的关键是递推函数。
m个苹果放在n个盘子中,那么定义函数为apple(m,n):
1.m=0,没有苹果,那么只有一种放法,即apple(0,n)=1
2.n=1,只有一个盘中,不论有或者无苹果,那么只有一种放法,apple(m,1)=1
3.n>m,和m个苹果放在m个盘子中是一样的,即apple(m,n)=apple(m,m)
4.m>=n,这时分为两种情况,一是所有盘子都有苹果,二是不是所有盘子都有苹果。不是所有盘子都有苹果和至少有一个盘子空着是一样的,即=apple(m,n-1)。所有盘子都有苹果,也就是至少每个盘子有一个苹果,m个苹果中的n个放在n个盘子中,剩下的m-n个苹果,这和m-n个苹果放在n个盘子中是是一样的,即=apple(m-n, n)。这时,apple(m,n)=apple(m-n, n)+apple(m,n-1)。
本题采用记忆化递归的解法。
这个题也可以用母函数来解,是一个母函数的裸题。
程序说明:
本题与参考链接是同一题,使用参考链接的程序提交就AC了。
参考链接:POJ1664 放苹果【递推+记忆化递归】
题记:朋友交多了,容易遇见熟人。
AC的C语言程序如下:
/* POJ1664 放苹果 */#include <stdio.h>
#include <string.h>#define N 10
int a[N + 1][N + 1];int apple(int m, int n)
{if(a[m][n])return a[m][n];else {if(m == 0 || n == 1)return a[m][n] = 1;else if(n > m)return a[m][n] = apple(m, m);elsereturn a[m][n] = apple(m - n, n) + apple(m, n - 1);}
}int main(void)
{memset(a, 0, sizeof(a));int t, m, n;scanf("%d", &t);while(t--) {scanf("%d%d", &m, &n);printf("%d\n", apple(m, n));}return 0;
}
Bailian1664 Placing apples【递推+记忆化递归】相关推荐
- POJ1664 放苹果【递推+记忆化递归】
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35209 Accepted: 21792 Description ...
- [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索
题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...
- HDU2018 母牛的故事【递推+记忆化递归】
母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- 爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)
70. 爬楼梯(剑指 Offer 10- II. 青蛙跳台阶问题) 递归(英语:Recursion),是指在函数的定义中使用函数自身的方法.有意义的递归通常会把问题分解成规模缩小的同类子问题,当子问题 ...
- HDU2569 彼岸【打表+记忆化递归】
彼岸 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- Bailian4117 简单的整数划分问题【整数划分+记忆化递归】
4117:简单的整数划分问题 总时间限制: 100ms 内存限制: 65536kB 描述 将正整数n 表示成一系列正整数之和,n=n1+n2+-+nk, 其中n1>=n2>=->=n ...
- JSK-4 简单斐波那契【基础+打表+记忆化递归】
简单斐波那契 斐波那契数列是一种非常有意思的数列,由 0 和 1 开始,之后的斐波那契系数就由之前的两数相加.用数学公式定义斐波那契数列则可以看成如下形式: F0=0 F1=1 Fn=Fn−1+Fn ...
- Bailian2753 菲波那契数列(POJ NOI0202-1755)【数列+记忆化递归】
问题链接:POJ NOI0202-1755 菲波那契数列. 菲波那契数列 总时间限制: 1000ms 内存限制: 65536kB 描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下 ...
- [剑指offer][JAVA]面试题第[10-1]题[斐波那契数列][动态规划][记忆化递归]
[问题描述][中等] 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N ...
最新文章
- SO_REUSEADDR和SO_REUSEPORT
- 3m格式的文件怎么转换成mp3_一招就能让PDF与其他格式文件相互转换,这样的大招你值得拥有...
- RECT JS 由浅入深
- BOSS直聘发起“逆行者先行”招聘专场:优先录取抗疫志愿者
- 组件的data属性 (有别于Vue实例的data属性)
- matlab里的svmtrain的输出model里,各参数的含义
- flush table mysql_MySQL flush table 导致的锁问题
- 矩张量计算 matlab,用来计算广义相对论常用张量计算的Matlab程序
- ubuntu 刷新频率 如何查看_ubuntu如何调整显示的分辨率和刷新率?
- mac 爱普生打印机驱动_EPSON 打印机软件
- 从零开始写一个武侠冒险游戏-4-第一次整合
- Java 和python多态区别_python面向对象之多态鸭子类型与Java的比较
- 如何下载VMWare虚拟机如何安装VMWare详细教程
- ThinkPHP 模板变量输出
- 三大跨境电商平台开店必备的材料
- MySQL create database 新建utf-8/utf8mb4编码 数据库
- iOS开发可以调节屏幕亮度并且上传APPstore
- html网站设计基础
- 安卓10不支持qmc解码_魅族官宣内测安卓10 数十款机型支持和四大亮点加持
- python中爬虫隐藏身份的设置
热门文章
- 想做个可以打印的服务,想用printdocument,但是不用winform,有谁知道怎么实现吗?万分感谢!
- 华为云对象存储obs文件上传
- PhotoShop学习篇
- 入门3D游戏建模,有哪些建模软件可以选择?
- 计算机硬件希沃课件,希沃课件怎么转为ppt?
- Lua:小数精度计算,几位数判断,四舍五入,最靠近5倍数取整
- 错误: 找不到或无法加载主类 com.sxt.ceshi.Demo166
- Python爬虫QQ音乐数据采取,公开数据获取案例之一(1),腾讯Python开发面试记录
- 我的MSN机器人终于有了自己的头像
- 关于核磁共振图像的命名原则及含义(总结自用)