文章目录

  • 题目
  • AC代码及思路
  • 收获

题目

AC代码及思路

#include <bits/stdc++.h>
using namespace std;int main() {int price, n;while (cin >> price, price != 0) {cin >> n;int *arr;arr = new int[n + 1];for (int i = 1; i <= n; ++i) {cin >> arr[i];}//完成输入int *dp;dp = new int[price + 1];for (int i = 1; i <= price; ++i) {dp[i] = 5000;}dp[0] = 0;//开始dpfor (int i = 1; i <= n; ++i) {for (int j = 1; j <= price; ++j) {if (j >= arr[i])dp[j] = min(dp[j], dp[j - arr[i]] + 1);}}//这个问题疑惑的点在于如果对于一张奇数的price与偶数数值的钱怎么判断这个钱放不满price?//比如price=9 有两种钱分别为2与4 显然如果对于普通的完全背包问题 dp[j]表示的是容量为j时的最大价值//对于price遍历到3的时候按理来说是可以放进来的 表示j为3的时候价值最大为2//but pay attention 这个题目的状态dp[j]表示的意思是凑满金额为j时所需要的最少钱数 这两者的概念是不一样的//也就是说该种背包问题还有一个限制就是背包必须完全放满//所以我们有了一个新的思路 就是把dp全部初始化为一个比较大的数记为inf且dp[0]=0 因为凑齐0的话就是0张钱//对于放得下却放不满的情况依旧采用dp[j] = min(dp[j], dp[j - arr[i]] + 1)//如果j对于这个arr[i]放不满的话 那么j-arr[i]对于arr[i]也一定放不满 最后对于arr[i]放不满的j的dp值仍旧初始的inf//如果j对于arr[i]放得满的话 那么肯定是由前面的j-arr[i]放得满导致的 所以依旧采取那么动态转移方程 可以得到最小值//到最后如果dp[price]的值仍旧是inf的话 那么说明所有钱币都不能把dp[price]放满也就是不符合//如果dp[price]是其他的数那么就说明符合//注意这个inf不能比0小也就不能是负数 否则的话就会导致放得满的情况也无法更新大点是为了不与可以凑成的数重了if (dp[price] != 5000)cout << dp[price] << endl;elsecout << "Impossible" << endl;delete[] dp;delete[] arr;}
}

收获

那么对于完全背包问题又必须放满的情况下,就可以采用初始化为一个较大的该题不可能遇到的数即可。

hnu 暑期实训之最少钱币数相关推荐

  1. hnu暑期实训之数塔 巧妙地设定一个偏移量

    文章目录 题目 思路 AC代码 收获 题目 思路 其实如果只是找路径的最大值的话,这是一个典型的多阶段最优解问题,要应用动态规划来求解,但是如果要输出所走过的路径的话,就比较麻烦. 可以发现的是,这个 ...

  2. hnu 暑期实训之疫情期间

    文章目录 题目 思路 AC代码 题目 [样例输入1] 4 1 3 2 0 [样例输出1] 2 [样例输入2] 7 1 3 3 2 1 2 3 [样例输出2] 0 [样例输入3] 2 2 2 [样例输出 ...

  3. hnu 暑期实训之蛇形矩阵

    文章目录 题目![在这里插入图片描述](https://img-blog.csdnimg.cn/2340a76f57c7440d937ed2b38107f60f.png?x-oss-process=i ...

  4. hnu 暑期实训之web导航

    文章目录 题目 思路 AC代码 python版 题目 [问题描述] 标准的Web浏览器具有在最近访问的页面中前后移动的特性.实现这些特性的一种方法是使用两个堆栈来跟踪可以通过前后移动到达的页面.在这个 ...

  5. hnu 暑期实训之到底买不买

    文章目录 题目 思路 AC代码 题目 思路 外层遍历小红要的珠子,内层遍历商家提供的珠子,如果相等计数器就+1.遍历完成后,对于计数器,它的最大值只会是小红珠子的长度.如果它们相等就说明小红可以搞到这 ...

  6. hnu 暑期实训之回文串

    文章目录 题目 思路 AC代码 题目 思路 回文串首先可以对所给的字符串判断一下看看是不是回文串,如果是就直接输出0:对于不是回文串的,我们先来观察一段回文串 "abcba" 对于 ...

  7. hnu 暑期实训之A除以B

    文章目录 题目 思路 AC代码 python版本的 题目 思路 本题模拟平时做除法即可,但是要注意一些特殊情况,比如被除数小于除数.被除数较大时但是首位较小(1234567/7,因为此时可能会有前导0 ...

  8. hnu 暑期实训之挖掘机技术哪家强

    文章目录 题目 思路 AC代码 题目 思路 人都说用map了还不用,你是闹着玩么. AC代码 #include <bits/stdc++.h> using namespace std; m ...

  9. hnu 暑期实训之公交系统

    文章目录 题目 思路 AC代码 后言 题目 思路 思路是当第一站人数为0时,找出车上人数的最大值与最小值,最后对w进行遍历,只要最大值+遍历变量<=w并且最小值+遍历变量>=0,就可以. ...

最新文章

  1. 搭建AI Studio 中Python开发环境
  2. 嵌入式linux系统架构
  3. 视频驱动V4L2子系统驱动架构 - ioctl
  4. MNIST机器学习入门(学习记录)——1
  5. QT的QProxyStyle类的使用
  6. 微信小程序入门资源整理(热更新)
  7. 《CSS揭秘》读书笔记
  8. mysql bin log 255_解析MYSQL BINLOG 二进制格式(4)--TABLE_MAP_EVENT
  9. 自定义self.editButtonItem 改变自定义self.editButtonItem的背景图片
  10. python为啥叫屁眼_python的递归
  11. 一台显示器分成双屏_华硕显示器贴心相伴:云办公、云学习宅家无忧
  12. txt文本阅读器 html,TxT小说阅读器(TxTReader)
  13. 计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理
  14. 正宗、创新红烧肉全法
  15. jekenis+tomcat部署更新war失败【踩坑日记】
  16. 点击复制以及长按识别图中二维码功能
  17. 算法成长之路------CF22A Second Order Statistics
  18. Sublime Text 安装 Helium 插件搭出Jupyter Notebook的效果
  19. ESP32 VHCI架构实现BLE扫描设备
  20. HUAWEI 机试题:字符串的解压缩

热门文章

  1. 51nod 1489 蜥蜴和地下室
  2. jQuery特效 | 导航底部横线跟随鼠标缓动
  3. PHP 中 new static 和 new self 的区别
  4. SpringMVC与Struts2关于controller线程安全问题
  5. 2019 CCPC 秦皇岛F Forest Program(dfs)
  6. XPath: A Syntax for Describing Needles and Haystacks(Chapter 3 of XSLT 2nd Edition)
  7. python problem
  8. B3403 [Usaco2009 Open]Cow Line 直线上的牛 deque
  9. automake的使用1
  10. 结构化元素、网页结构和iframe内联框架