完全背包问题 旅游付费
背包问题
卖方:这件商品14元
买方:给你20元
卖方:不好意思,我的零钱不够
买方:好吧,这是15元,剩的当小费
当到一个地方旅游时,如果你买东西的地方不支持信用,带零钱还是非常有用的。特别是有时候卖方没有零钱,如果你没有刚好的钱,你需要支付比卖价多一点。
当然你想付尽量少的钱(至少是商品价值的钱)。并且,当支付最少钱的时候,也最好是支付的硬币的数量最少。
Input
第一行包含一个整数表示测试数据的组数。每组测试数据每一行包含一个整数,表示你需要付的钱数,钱数不超过10000元。接下来包含一个整数n,表示你所拥有的钱的数量,n最多是100,接下来的n行每行一个整数,表示你有的每个硬币的面值,注意钱的面值可以是任意的,不和我们现在用的面值一样,钱的面值不超过10000元。
Output
对每组测试数据,在一行上输出两个整数:需要支付的钱数和数量。
Sample Input
1
1400
3
500
1000
2000
Sample Output
1500 2
j代表从1到所有钱数的和,为了简便存储,赋予j特定的范围30400,a[i]的值表示拥有钱的面值,dp[i][j]的值表示前 i 张钱刚好能支付对应的钱为 j 时所需要的钱的张数
初始赋值:将dp[i][i]整个表赋值为比输入的钱数大1的值(n+1),dp[i][0]=0,
关键算法:如果j<a[i] dp[i][j]=dp[i-1][j]
如果 j>=a[i] dp[i][j]=min(dp[i-1][j-a[i]]+1,dp[i-1][j])
查找用到的钱的面值:将需要支付的钱数m作为搜寻dp表的初始 j 值,从dp[i][m]开始正向搜索,从左到右、从上到下查找到第一个比(n+1)小的值输出其dp[i][j]的值表示钱的数量,j表示支付的钱数。
#include <iostream>
#include <algorithm>
using namespace std;
int dp[101][30400];
int main()
{int x,m,n,a[101],sum;cin>>x;while(x--){cin>>m;cin>>n;for(int i=1; i<=n; i++){cin>>a[i];}for(int i=0; i<=n; i++)for(int j=0; j<=30400; j++)dp[i][j]=n+1;for(int i=0; i<=n; i++)dp[i][0]=0;for(int i=1; i<=n; i++)for(int j=1; j<=30400; j++){if(j<a[i])dp[i][j]=dp[i-1][j];if(j>=a[i])dp[i][j]=min(dp[i-1][j-a[i]]+1,dp[i-1][j]);}int tp=0,mp=0;for(int j=m; j<=30400; j++){for(int i=1; i<=n; i++){if(dp[mp][j]>dp[i][j]){mp=i;tp=j;}}if(tp!=0){cout<<tp<<" "<<dp[mp][tp]<<endl;break;}}}return 0;
}
由于刚开始想用动态数组分配内存来存储数据(动态分配又不太会,一直运行不对,哈哈哈哈)。
初始化 dp[i][j] 时,由于一心想着 j 要循环到sum,一直运行不对(不知道是什么原因,哈哈哈哈哈,我是个业余的程序员)。
完全背包问题 旅游付费相关推荐
- 算法一(python)
文章目录 二分查找 大O表示法 数组&链表 选择排序 递归 栈 递归调用栈 分而治之 快速排序 散列表 缓存 冲突 填装因子 良好的散列函数 广度优先搜索(breadth-first sear ...
- Python告诉你这些旅游景点好玩、便宜、人又少!
(图片由CSDN付费下载自东方IC) 作者 | 猪哥 来源 | 裸睡的猪(ID:IT--Pig) 2019年国庆马上就要到来, 今年来点新花样吧, 玩肯定是要去玩的, 不然怎么给祖国庆生? 那去哪里玩 ...
- 去哪儿对垒携程 在线旅游静悄悄的革命
出处:21世纪经济报道 时间:2011-05-11 10:38[ 字体: 大 中 小 ] [打印此页] [关闭] 颠覆与被颠覆的游戏,正于在线旅游市场悄然演绎. 5月10日,携程收报48.3美元,市 ...
- 法律规则鬼畜图解||全面易懂的旅游投诉赔偿标准
法律规则鬼畜图解||全面易懂的旅游投诉赔偿标准https://zhuanlan.zhihu.com/p/82878902 执笔人:张宗保律师(联系方式:知乎私信) 执业地域:深圳市 执业方向:民商事诉 ...
- 互联网晚报 | 1月25日 星期二 | 知乎首次举办上星晚会;微信视频号上线首个付费直播间;淘宝天猫“春节不打烊”活动正式上线...
今日看点 ✦ 淘宝天猫"春节不打烊"活动正式上线,20万商家春节照常发货 ✦ 微信视频号上线首个付费直播间,免费观看3分钟后需付费 ✦ 知乎首次举办上星晚会,2022知乎答案奇遇夜 ...
- 旅游解说系统 VS 旅游信息系统
旅游解说系统: "解说是一种信息传送的服务,目的在于告知及取悦游客,并阐释现象背后所代表之含义,籍着提供相关的咨询来满足每个让你的需求与好奇,同时又不偏离中心主题,期能激励游客对所描述的事物 ...
- 旅游捞金的六大方式,玩着把钱赚了
生活在繁忙的大都市中,面对劳累的工作和繁琐的家事,一场说走就走的旅行无疑是肆放焦虑的良药. 但现实是"说走就走"绝不是那样简单的. 时间要调配.工作需处理.路线应规划...... ...
- 阿里Q1财报:云计算付费用户首超100万
2017年8月17日晚间,阿里巴巴集团公布2018财年第一季度(2017年4月至6月底)财报,阿里云达到一个重要里程碑,云计算付费用户数量首次超过100万.同时,企业级市场被云计算人工智能等新技术全面 ...
- 带你去旅游 伴我游世界
TOP1 南非"非洲之傲"列车 最优质列车旅游线路 行车段:南非比勒陀利亚至开普敦.维多利亚瀑布,路过南非著名的钻石之城--金伯利. 排名理由:"非洲之傲"罗沃 ...
- 深度:老年旅游市场迎来转折点,50/60新老年消费升级带来结构性创新机会—营销/产品/运营
|| 高获客成本与同质化恶性竞争倒逼中老年旅游市场进入转折点 对于中国老年行业来说,老年旅游是最先崛起的C端消费市场,也是过去连续许多年增长超过20%,整体规模突破万亿的消费市场,老年行业内众多相关或 ...
最新文章
- JS --正则表达式
- 当周期信号的频率趋向无穷时,它将消失
- 文巾解题 278. 第一个错误的版本
- API的String 一些用法
- 数据库名、实例名和ORACLE_SID的区别
- Java枚举(Enum)类型的基本介绍与原理探求
- 计算1970距今的秒数
- 解决AndroidStudio更新后在 Building gradle project info 一直卡住
- 5901和5909在P570中的功用
- 华为C语言编程规范(精华总结)
- 张小龙《微信背后的产品观》演讲文字版
- nProtect的一些知识
- 用Markdown画流程图
- mysql日期教程_Navicat for MySQL 设置日期时间栏位教程(图文)
- 数学之美——信息的度量
- Facebook名人软件Mentions有了Android版本
- 高职计算机考试试题与答案,2009高职高考计算机试题
- 光电技术与光纤基础期末复习笔记
- 程序员的职业素养 读书笔记 - 第6章 练习
- i5-10400+ 华硕(ASUS)TUF GAMING B460M-PLUS (WI-FI) +0.6.4oc引导实现完美黑苹果
热门文章
- 合唱队形java_动态规划之合唱队形问题
- [转载] C#开发实战1200例(第I卷)目录
- VOT2016配置 VOT tookit
- Banner框架实现图片轮播
- ZZULIOJ-1035,分段函数求值(Python)
- 漫话:如何给女朋友解释什么是RPC
- WARN: Establishing SSL connection without server‘s identity verification is not recommended. Acco...
- php生成临时文件,php生成zip压缩文件的方法详解
- 申请企业邮箱有哪些好处?企业邮箱优势盘点
- 节奏大师显示服务器,节奏大师上线首日登录困难 服务器拖累腾讯游戏