[POJ1664] 放苹果 (动态规划,组合数学)
题目描述
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法)
输入输出格式
输入格式:
第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开。1<=M,N<=10
输出格式:
对输入的每组数据M和N,用一行输出相应的K。
输入输出样例
输入样例#1:
1
7 3
输出样例#1:
8
输入样例#2:
3
3 2
4 3
2 7
输出样例#2:
2
4
2
Solution
这道题是我做 P1655 的时候看到的,似乎又是一道DP来解组合数学.
状态很好定义:
\[ f[i][j]\]
表示当前有 i 个苹果,放了 j 个箱子的方案数.
初始化:
1)只有当没箱子或者没苹果的时候我们才赋成0
2)当没有苹果,只有一只箱子的时候,我们赋为1,此时只有一种情况.就是不放
前导状态
1)可以有多个箱子不放,此处通过递归来实现
2)全部都放,所以需要m个苹果来每一层至少垫上一个,然后又剩下n-m个苹果随意放
转移方程:
\[f[i][j]=f[i][j-1]+f[i-j][j]\]
代码
#include<bits/stdc++.h>
using namespace std;
int t;int dp(int n,int m)
{if(n<0||m<1)return 0;if(n==0&&m==1)return 1;return dp(n,m-1)+dp(n-m,m);
}int main()
{ios::sync_with_stdio(false);cin>>t;while(t--){int n,m;cin>>n>>m;cout<<dp(n,m)<<endl;}
}
...
当然了,作为一道组合类的题目,也可以直接作为一道生成函数的模板题来做.但是我似乎没打,只给出一个网址,日后会补生成函数的.
https://blog.csdn.net/dlutjwh/article/details/69217270
转载于:https://www.cnblogs.com/Kv-Stalin/p/9113833.html
[POJ1664] 放苹果 (动态规划,组合数学)相关推荐
- POJ-1664 放苹果 动态规划思想解组合数学
该题说明了状态开设的意义一样,但是从哪个方向去理解推倒状态的转移对解题非常关键.该题扣住是否所有的盘子中有空盘子,就得到了一个非常简单且优美的方程.如果从当前盘子的放置状态或者是当前苹果的放置状态来求 ...
- POJ1664 放苹果【递推+记忆化递归】
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35209 Accepted: 21792 Description ...
- POJ1664 放苹果问题(递归)
目录 POJ1664 放苹果问题(递归) 一. 递归简介 二. 题目描述 三. 输入.输出格式 四.输入输出样例 五.题目分析 六.测试代码 一. 递归简介 程序调用自身的编程技巧称为递归( recu ...
- POJ-1664 放苹果
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21021 Accepted: 13395 Description ...
- 放苹果———动态规划中的划分数问题
动态规划问题 放苹果是一道典型的DP问题,这道题采用递归+分治+DP的方式解决. 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和 ...
- poj1664(放苹果)
题目链接:http://poj.org/problem?id=1664 关于放苹果的那些事.......... 今天偶然看到一个关于整数划分的算法, 仔细看了后,我想到了放苹果的事,其实这个问题困扰了 ...
- 算法实践:放苹果(组合数学)
放苹果 描述 要寻找克罗克果实,林克需要把苹果放在盘子里,其中只有一种情况可以让克罗克果实出现.所以,林克需要尝试所有的放法. 有M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种 ...
- c语言 10分苹果,POJ1664 放苹果 递归 C语言
Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 ...
- CCF NOI1073 放苹果
问题链接:CCF NOI1073 放苹果. 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的放法( ...
最新文章
- YOLOv3和YOLOv4长篇核心综述(下)
- argis怎么关掉对象捕捉_你和你的网恋对象,都怎么样了?
- 坐火车一定要带身份证
- Java数据类型和MySql数据类型对应表
- java asm 中文文档_Java ASM3学习(3)
- java中的与或非_与或非 · java development · 看云
- UE4加载osgb倾斜摄影数据
- 解题报告:hdu1248寒冰王座 - 完全背包模板
- Active Directory系列之二:部署第一个域
- 39个seo大师级经典案例
- 火狐firebug和firepath插件安装方法
- java itex 打印pdf_Java使用iTextPDF生成PDF文件的实现方法
- Redis中的事务和三特性
- 数据挖掘之大数据流处理
- 一次Linux遭入侵,挖矿进程被隐藏案例分析
- 更改pip镜像源的多种方法
- 阿尔法贝塔阀原理_阿尔法(alpha)与贝塔(beta)
- 服务器新建虚拟机不识别u盘,虚拟机无法识别u盘如何解决_虚拟机中无法识别u盘的处理办法...
- 优鲜遇冷,叮咚还能如期上市吗?
- 红外线遥控协议简介(NEC格式)