动态规划捡硬币问题c语言,DAG动态规划-硬币问题

题目:有n种硬币,面值分别为V1,V2,...Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值!

#include

using namespace std;

int n, m, t;

const int INF = 0x3f3f3f3f;

int a[1005],Max[1005],Min[1005];

void dfs(int *d, int s)

{

for(int i=1; i<=n; i++)

if(s>=a[i] && d[s] == d[s-a[i]]+1){

printf("%d ",i);

dfs(d,s-a[i]);

break;

}

}

int main()

{

cin >> n >> m;

for(int i=1;i<=n; i++) cin>>a[i];

for(int i=1;i<=m;i++){

Min[i]=INF;

Max[i]=-INF;

}

for(int i=1;i<=m;i++){

for(int j=1;j<=n;j++){

if(i >= a[j]){

Max[i] = max(Max[i-a[j]]+1,Max[i]);

Min[i] = min(Min[i-a[j]]+1,Min[i]);

}

}

}

cout << Max[m] <

dfs(Max,m);

cout<

dfs(Min,m);

}

/*

3 8

1 2 4

*/

#include

using namespace std;

int n, m, t;

const int INF = 0x3f3f3f3f;

int a[1005],Max[1005],Min[1005],Max_[1005],Min_[1005];

void dfs(int *d, int s)

{

for(int i=1; i<=n; i++)

if(s>=a[i] && d[s] == d[s-a[i]]+1){

printf("%d ",i);

dfs(d,s-a[i]);

break;

}

}

void print(int *d, int s)

{

while(s){

printf("%d ",d[s]);

s -= a[d[s]];

}

}

int main()

{

cin >> n >> m;

for(int i=1;i<=n; i++) cin>>a[i];

for(int i=1;i<=m;i++){

Min[i]=INF;

Max[i]=-INF;

}

for(int i=1;i<=m;i++){

for(int j=1;j<=n;j++){

if(i >= a[j]){

if(Min[i] > Min[i-a[j]]+1){

Min[i] = Min[i-a[j]]+1;

Min_[i] = j;

}

if(Max[i] < Max[i-a[j]]+1){

Max[i] = Max[i-a[j]]+1;

Max_[i] = j;

}

}

}

}

cout << Max[m] <

//dfs(Max,m);

print(Max_,m);

cout<

//dfs(Min,m);

print(Min_,m);

}

/*

3 8

1 2 4

*/

uva 11324 The Largest Clique&lpar;强连通分量缩点&plus;DAG动态规划&rpar;

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=25&page=sh ...

DAG模型——硬币问题

硬币问题 有n种硬币,面值分别为V1,V2,...,Vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值.1<=n<=100, 0& ...

DAG 动态规划 巴比伦塔 B - The Tower of Babylon

题目:The Tower of Babylon 这是一个DAG 模型,有两种常规解法 1.记忆化搜索, 写函数,去查找上一个符合的值,不断递归 2.递推法 方法一:记忆化搜索 #include &lt ...

Test 6&period;29 T3 小学生

问题描述 "不错,不错!那么,准备好迎接下一道题了么?"一道白光闪过,CJK 眼前出现了 1e100 个小学生."他们中,有一些人轨了我的机子.现在,我需要你在 1S 之 ...

jieba分词流程及部分源码解读(一)

首先我们来看一下jieba分词的流程图: 结巴中文分词简介 1)支持三种分词模式: 精确模式:将句子最精确的分开,适合文本分析 全模式:句子中所有可以成词的词语都扫描出来,速度快,不能解决歧义 搜索引 ...

DAG上动态规划

很多动态规划问题都可以转化为DAG上的最长路,最短路,或路径计数问题. 硬币问题: 有N中硬币,面值分别为v1,v2,v3,……vn,每种都无穷多,给定非负整数S,可以选用多少个硬币,使他们的总和恰好 ...

DAG 上的动态规划(训练指南—大白书)

有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础.很多问题都可以转化为DAG上的最长路.最短路或路径计数问题. 一.矩形嵌套 题目描述:       ...

DP入门(2)——DAG上的动态规划

有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础.很多问题都可以转化为DAG上的最长路.最短路或路径计数问题. 一.DAG模型 [嵌套矩形问题] 问题 ...

第九章(二)DAG上的动态规划

DAG上的动态规划: 有向无环图上的动态规划是学习DP的基础,很多问题都可以转化为DAG上的最长路.最短路或路径计数问题. 1.没有明确固定起点重点的DAG模型: 嵌套矩形问题:有n个矩形,每个矩形可 ...

随机推荐

iOS开发之各种动画各种页面切面效果

因工作原因,有段时间没发表博客了,今天就发表篇博客给大家带来一些干货,切勿错过哦.今天所介绍的主题是关于动画的,在之前的博客中也有用到动画的地方,今天就好好的总结一下iOS开发中常用的动画.说道动画其 ...

mysql临时禁用触发器

mysql支持设定session变量,并且有带入到触发器中使用的能力,故可以间接的设置触发器失效 思路是: 在执行前设定一个session变量,执行过程中判断该变量的值(没有设定该变量的值时该变量默认 ...

POJ 3264 Balanced Lineup 线段树 第三题

Balanced Lineup Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line ...

C&plus;&plus; Primer 学习笔记&lowbar;56&lowbar; 类和数据抽象 --消息处理演示示例

拷贝控制 --消息处理演示样例 说明: 有些类为了做一些工作须要对复制进行控制. 为了给出这种样例,我们将概略定义两个类,这两个类可用于邮件处理应用程序.Message类和 Folder类分别表示电子 ...

python入门基础

Python 入门 变量 什么是变量?变量就是变化的量,核心是"变"和"量"两个字,变就是变化,量就是衡量状态. 为什么需要变量?程序执行的本质就是一系列状态的 ...

Error response from daemon&colon; conflict&colon; unable to remove repository reference 解决方案

由于前一章演示用的镜像没什么用准备删除 docker image rm hello-world:latest Error response from daemon: conflict: unable ...

mysql数据库目录my&period;ini的内容

[mysql]  # 设置mysql客户端默认字符集  default-character-set=utf8  [mysqld]  #设置3306端口  port = 3306  # 设置mysql的 ...

python&lowbar;web应用雏型

python_web应用雏型 Web应用程序顾名思义,就是一种可以通过Web访问的应用程序, Web应用的最大特点是用户只需要有网络和浏览器,不需要再安装其他软件就可顺利通过web访问到程序. WEB ...

Javascript中的数据类型知多少

JavaScript 是一种弱类型或者说动态语言.这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定.这也意味着你可以使用同一个变量保存不同类型的数据 根据ECMAScript 5. ...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值