hdu 1284 钱币兑换问题 (递推 || DP || 母函数)
钱币兑换问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5069 Accepted Submission(s): 2868
题目虽然简单,但是有不同的解决方法:
1、利用母函数打表:
//515MS 492K 540 B C++
#include<stdio.h>
int ans[],tmp[];
void init()
{
int n=;
for(int i=;i<=n;i++){
ans[i]=;
tmp[i]=;
}
for(int i=;i<=;i++){
for(int j=;j<=n;j++)
for(int k=;k+j<=n;k+=i)
tmp[j+k]+=ans[j];
for(int j=;j<=n;j++){
ans[j]=tmp[j];
tmp[j]=;
}
}
}
int main(void)
{
int n;
init();
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",ans[n]);
}
return ;
}
2、DP-完全背包:
//15MS 356K 274 B C++
/*
容量为j,质量为i
*/
#include<stdio.h>
int main(void)
{
int dp[]={};
dp[]=;
for(int i=;i<=;i++)
for(int j=i;j<=;j++)
dp[j]+=dp[j-i]; //只有i-1时情况加上有i的情况。
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",dp[n]);
}
return ;
}
3、递推:
//15MS 364K 361 B C++
#include<stdio.h>
int ans[]={};
void init()
{
int n=;
for(int i=;i<=n;i++) //只有1、2时的情况
ans[i]=i/+;
for(int i=;i<=n;i++) //加上有3时的情况
ans[i]+=ans[i-];
}
int main(void)
{
int n;
init();
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",ans[n]);
}
return ;
}
hdu 1284 钱币兑换问题 (递推 || DP || 母函数)的更多相关文章
- HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)
HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包) 题意分析 裸的完全背包问题 代码总览 #include <iostream> #include <cstdio> ...
- HDU 1284 钱币兑换问题 母函数、DP
题目链接:HDU 1284 钱币兑换问题 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU 1284 钱币兑换问题(全然背包:入门题)
HDU 1284 钱币兑换问题(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1284 题意: 在一个国家仅有1分,2分.3分硬币,将钱N ( ...
- HDU 1284 钱币兑换问题(普通型 数量无限的母函数)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1284 钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1284 钱币兑换问题 完全背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284 递推公式:dp[i] = sum(dp[i], dp[i-C]) /* 钱币兑换问题 Time ...
- 题解报告:hdu 2084 数塔(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这 ...
- HDU 1284 钱币兑换问题 (动态规划 背包方案数)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1284 钱币兑换问题 (完全背包)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1284 钱币兑换问题 (dp)
题目链接 Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于327 ...
随机推荐
- 通过Ops Manager安装管理mongodb-3.4集群
node1 Ops Manager,mongodb,agent node2 mongodb,agent node3 mongodb,agent 参考文档 https://docs.opsmanager ...
- Java OOP——第一章 对象和封装
1.软件出现的目的: 用计算机的语言描述现实世界 用计算机解决现实世界的问题 ◆面向对象设计和开发程序的好处: 交流更加流畅 提高设计和开发效率 计算机语言的发展向接近人的思维方式演变 ...
- centos下安装docker以及docker-composer
背景 docker已经出来了很久,而我一直想混迹到docker大军中进行冲锋陷阵,恰逢公司项目的需要,因此今天玩了一把docker的安装.使用Docker 一键部署 LNMP+Redis 环境 事先准 ...
- 【ISIS(中间系统到中间系统)路由链路状态信息协议初识】
ISIS单区域的基本配置 一:根据项目需求,考虑到组网的规模和条件,部署ISIS单区域的拓扑图如下: 二:配置 1:首先对RTA进行配置,在系统视图创建ISIS进程:进入ISIS配置视图,指定IS的级 ...
- git merge最简洁
一.开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支 git checkout devgit pullgit checkout mastergit merge devgit p ...
- 解决Pycharm无法使用已经安装Selenium的问题
重要:参考资料 当前版本 python版本:2.7 pycharm: 2017 原来本机是已经安装了2.7和selenium,新安装了一个pycharm的ide,于是selenium总是安装报错.At ...
- python2.7入门---文件I/O&简单用户交互
这篇文章开始之前,我们先来看下python中的输出方法.最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写 ...
- es同步mysql同步-logstash
1.下载es https://www.elastic.co/downloads/elasticsearch 修改 config 下elasticsearch.yml ip和端口等配置 2.下载ki ...
- Hibernate-ORM:10.Hibernate中的分页
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的分页 hibernate中的分页其实很好写,它通过操作对象的方式,来进行分页 ...
- Qt的index 用方法static_cast<CTableItem*>(index.internalPointer())取出来的值的成员都未初始化
mediaData = 0x01046380 {m_Deviceid={...} m_Title={...} m_Type={...} ...} 里面是这样的值,内存已经释放,但是没有remove: