题目描述:

小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在游戏中购买各种装备来提升自己。有一天,他突然很想知道这些纸币的组合不能表示的最小面额是多少,请聪明的你来帮助小虎来解决这个财政问题吧

思路

1. 面值最小额度, 枚举的话时间复杂度为 o(n^3). 但思考一下就会发现其实这是背包问题恰好装满的变形题

2. 背包问题恰好装满是在朴素背包问题的基础上初始化 dp[0] = 0, dp[i] = 负无穷. 这样就会使得不能恰好装满的容量都是负无穷

3. 下面的代码设置的是 int dp[], 其实设置成 bool dp[] 也是可以的

代码

#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std;const int INF = 10005;
int dp[10010];
int money[110];void dodp(int n) {memset(dp, 0x80, sizeof(dp));dp[0] = 0;for(int i = 0; i < n; i ++) {for(int v = INF; v >= 0; v --) {if(v >= money[i])dp[v] = max(dp[v-money[i]]+money[i], dp[v]);}}for(int i = 0; i < INF; i++) {if(dp[i] < 0) {cout << i << endl;    break;}}
}int main() {int n;while(scanf("%d", &n) != EOF) {for(int i = 0; i < n; i ++)scanf("%d", money+i);dodp(n);}return 0;
}

转载于:https://www.cnblogs.com/xinsheng/p/3580202.html

九度 1531:货币面值(01背包)相关推荐

  1. 背包九讲系列1——01背包、完全背包、多重背包

    我在进行一些互联网公司的技术笔试的时候,对于我来说最大的难题莫过于最后的那几道编程题了,这对算法和数据结构有一定程度上的要求,而"动态规划"又是编程题中经常出现的算法类型,并且对于 ...

  2. 九小时九个人九扇门(01背包)

    题目链接 https://ac.nowcoder.com/acm/contest/23106/A 题面 思路 小技巧 一个数的数字根就是它对9取模,当然取模得0的数字跟就是9 做法 我们要求的是从n个 ...

  3. 动态规划 背包问题小结 0-1背包(采药 九度第101题) 完全背包(Piggy-Bank POJ 1384) 多重背包(珍惜现在,感恩生活 九度第103题)

    本小结介绍0-1背包.完全背包以及多重背包问题 记忆要点: 0-1背包:二维数组情况下,顺序遍历体积或者倒序均可以                降维情况下需倒序遍历体积 完全背包:数组降维+顺序遍历 ...

  4. 九度 1462:两船载物问题(01背包)

    题目描述: 给定n个物品的重量和两艘载重量分别为c1和c2的船,问能否用这两艘船装下所有的物品. 思路 1. 朴素背包问题 2. 有几个细节要好好把握 (1) 在读入物品重量时顺带统计物品的最大值和总 ...

  5. 浅说——九讲背包之01背包

    所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...

  6. 九度 1209:最小邮票数(多重背包)

    题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值     如,有1分,3分,3分,3分,4分五张邮票,要求凑成10分,则使用3张邮票:3分.3分.4分即可 思路 1. 朴素背包问 ...

  7. 2020牛客寒假算法基础集训营3——J.牛牛的宝可梦Go【最短路 DP(01背包) 复杂度优化】(附优化分析)

    题目传送门 题目描述 牛牛所在的W市是一个不太大的城市,城市有n个路口以及m条公路,这些双向连通的公路长度均为1,保证你可以从一个城市直接或者间接移动到所有的城市.牛牛在玩宝可梦Go,众所周知呢,这个 ...

  8. 背包九讲 (蒟蒻版)之01背包

    hello,你们的loony上线啦.你们知道吗?我今天早上起来一看手机,600多人在CSDN上访问过我,当时我心情都要炸了(补充:高兴炸了),因为,这毕竟只是本蒟蒻的梦想嘛~ 好了不嘚瑟啦! 今天就来 ...

  9. 【01背包的k值问题 HDU2639 HDU2126】

    HDU2639 有深度吧感觉还 题意:给出一行价值,一行体积,让你在v体积的范围内找出第k大的值 终结第k大的01背包, 复杂度: O(NMK) 注意选取的标准,选取后,要保证得到的价值是大于未选之前 ...

最新文章

  1. C++中vector的使用
  2. r语言 调用c windows,R:window()函数
  3. Web API之service worker
  4. poj3264Balanced Lineup(倍增ST表)
  5. 6.java 代码块
  6. 在Spring MVC Web应用程序中使用reCaptcha
  7. LinuxC高级编程——线程间同步
  8. .某学校的学生公寓有14栋楼,用A~N这14个大写字母的其中一个代表楼号,每栋楼的层数为6层,用1~6六个数字表示。每层楼有40个房间,编号为01~40。具体表示一个宿舍房间时,用1个字母加3位数字表
  9. Java常见OutOfMemoryError
  10. Android 开发者的 RxJava 详解(一)
  11. Installation error: INSTALL_FAILED_NO_MATCHING_ABIS
  12. 用C语言编写链式存储的线性表(含代码实现)
  13. [翻译] 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
  14. Selenium爬虫 -- 无界面爬取:无头模式及其他参数
  15. HanLP里使用DAT存取字典的方法
  16. WPF学习(一)--布局控件简介
  17. 【代码优化】构造器参数繁多时候,考虑使用builder模式
  18. DG半离散格式的转化---基于matlab编写
  19. 浅谈计算机网络安全问题和对策
  20. unity 实现流光效果

热门文章

  1. 神超重回两只手操作时代?霸哥最强上单要被抢,战场在LOL手游
  2. Maven解决jar包版本冲突
  3. 零基础学Python(第三章 基础语法)
  4. File stdin , line 1
  5. 源哥每日一题第十三弹 百练4124:海贼王之伟大航路 状压dp
  6. 022-红黑树(三)
  7. 51nod 1222 最小公倍数计数【莫比乌斯反演】
  8. 【[Offer收割]编程练习赛9 C】三等分
  9. django权限管理
  10. 计算机科学导论学习资料