1. 从一个生活问题谈起

先来看看生活中经常遇到的事吧——假设您是个土豪,身上带了足够的1、5、10、20、50、100元面值的钞票。现在您的目标是凑出某个金额w,需要用到尽量少的钞票。

依据生活经验,我们显然可以采取这样的策略:能用100的就尽量用100的,否则尽量用50的……依次类推。在这种策略下,666=6×100+1×50+1×10+1×5+1×1,共使用了10张钞票。

这种策略称为“贪心”:假设我们面对的局面是“需要凑出w”,贪心策略会尽快让w变得更小。能让w少100就尽量让它少100,这样我们接下来面对的局面就是凑出w-100。长期的生活经验表明,贪心策略是正确的。

但是,如果我们换一组钞票的面值,贪心策略就也许不成立了。如果一个奇葩国家的钞票面额分别是1、5、11,那么我们在凑出15的时候,贪心策略会出错:

15=1×11+4×1 (贪心策略使用了5张钞票)

15=3×5 (正确的策略,只用3张钞票)

为什么会这样呢?贪心策略错在了哪里?

鼠目寸光。

刚刚已经说过,贪心策略的纲领是:“尽量使接下来面对的w更小”。这样,贪心策略在w=15的局面时,会优先使用11来把w降到4;但是在这个问题中,凑出4的代价是很高的,必须使用4×1。如果使用了5,w会降为10,虽然没有4那么小,但是凑出10只需要两张5元。

在这里我们发现,贪心是一种只考虑眼前情况的策略。

那么,现在我们怎样才能避免鼠目寸光呢&#x

python最少钞票_钞票最少张数相关推荐

  1. python 线性规划问题_一学高数,线代就头疼?让python帮你解决(内含教程)

    栏目「有学问」是UBook知识在线的趣味科普专栏,专注于分享有趣好玩的科普知识,旨在发现更多有趣好玩的冷知识,发掘更多生活中的趣味. 自从上了大学以后,各种高数线代数学课防不胜防,有人说,如果你觉得高 ...

  2. python corr画图_用一张很丑的图学习Python数据可视化基础--热力图

    视频: # 热力图(相关矩阵) import seaborn as sns import matplotlib.pyplot as plt #准备数据,协方差矩阵 dfData = df.corr() ...

  3. FJUT-cwl的女朋友3 凑钱最少张数问题

    废话不说,上题目! 基本思路:乍一看,康康想到的是贪心,但是(此处转折很重要),面额有坑,贪心是不能实现的,既然是求最少张数,可以考虑动态规划.emmm,康康听说一些大佬用搜索和暴力也可以快速ac,此 ...

  4. 【等价类划分法】某商店的货品价格(P)都不大于 20 元(且为整数),假设顾客每次付款为 20 元且每次限购一件商品,现有一个软件能在每位顾客购物后给出找零钱的最佳组合(找给顾客货币张数最少)。

    题目: [说明] 某商店的货品价格(P)都不大于 20 元(且为整数),假设顾客每次付款为 20 元且每次限购一件商品,现有一个软件能在每位顾客购物后给出找零钱的最佳组合(找给顾客货币张数最少). 假 ...

  5. 一个顾客买了价值x元的商品,并将y元的钱交给售货员。售货员希望用张数最少的钱币找给顾客。 无论买商品的价值x是多大,找给他的钱最多需要以下六种币值:50,20,10,5,2,1

    Problem Description 一个顾客买了价值x元的商品,并将y元的钱交给售货员.售货员希望用张数最少的钱币找给顾客. 无论买商品的价值x是多大,找给他的钱最多需要以下六种币值:50,20, ...

  6. C语言求把100元换成20元,10元,5元的纸币.要求每种纸币至少有一张。以及最少张数

    求最少张数: #include <stdio.h> #include <stdlib.h> void main(void) { int n5,n10,n20; int m5,m ...

  7. python获取word页数_使用Python的word文档的页数(Number of pages of a word document with Python)...

    使用Python的word文档的页数(Number of pages of a word document with Python) 有没有办法用Python有效地获得word文档(.doc,.doc ...

  8. Python 实例教学_ 04_排序

    Python 实例教程 Python 实例教学_ 04_排序 第十九课 [870. 优势洗牌](https://leetcode.cn/problems/advantage-shuffle/) [90 ...

  9. Python 实例教学_ 03_列表

    Python 实例教程 Python 实例教学_ 03_列表 第十三课 [844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-c ...

最新文章

  1. OssImport系列之四——最佳实践
  2. 阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?
  3. MACD 的数学解释
  4. 【安卓开发 】Android初级开发(零)各种布局
  5. POJ1204 Word Puzzles
  6. POJ3630——简单Trie树
  7. 1.(单选题) HTML是指,《计算机应用基础》第五阶段在线作业(自测).doc
  8. 蓝桥杯2015年第六届C/C++B组第六题-加法变乘法
  9. php smarty数学函数,smarty详解二:从文件读取变量、保留变量、数学计算、内建函数...
  10. 【UE】UE4下载安装及测试demo
  11. HTML网页实训的目的,web前端设计与开发-实验目的及要求 (2)
  12. 安装IBM HTTP SERVER
  13. 海洋cms 模板标签手册
  14. Acdream 1729 Crime
  15. 华为开发者大赛-昇腾AI初创大赛决赛暨星火计划Online第二期来啦!
  16. flutter拨打电话url_launcher
  17. Py遇到Bad key “text.kerning_factor“ on line 4 in
  18. 百钱百鸡问题(C++)
  19. STM32学习总结——UART
  20. WIFI基础入门--802.11--成帧细节(管理帧)--5

热门文章

  1. 不会写代码,我就偏偏就做自动化测试了。
  2. python之首字母大写
  3. 2021年汽车激光雷达行业研究报告
  4. 【中学】判断三角形的形状
  5. (装机)关于WINRE/ESP/LRS_ESP/MSR/PBR这些分区
  6. Maven学习(一) --------- Maven 简介
  7. 漫画:滑动窗口入门题目,没有之一
  8. python如何根据数据画散点图_用python绘制散点图
  9. Java 输出四叶玫瑰数
  10. 手把手教你下载在线地图?!再也不用下了