题目描述:

现有的钱币:coins=[1,2,5,7,10]

找零:change(假定为正整数)

求解:如何用最少的钱币进行找零

分析:可以使用动态规划

比如找零8元,可以将问题进行分解

dp[8]=dp[8-coins[j]]+1

即:

dp[8]=dp[8-1]+1=dp[7]+1

dp[8]=dp[8-2]+1=dp[6]+1

dp[8]=dp[8-5]+1=dp[3]+1

dp[8]=dp[8-7]+1=dp[1]+1

初始化:

dp=[change+1]*(change+1) #对应的dp[0],dp[1],dp[2]...dp[change]

dp[0]=0 #因为找0元需要0张钱币

使用的钱币初始化:

coins_used=[0]*(change+1)

代码:

def coin_change(coins,change,dp,coins_used):

'''利用动态规划求解找零需要的钱币张数,以及钱币的使用情况'''

for i in range(1,change+1):

#依次求解,dp[1]~dp[change]

for j in range(len(coins)):

if coins[j]<=i:

#使用这张钱币的前提,纸币的金额数<=需要找零的金额,比如:找零8块,不能使用10块的钱币

if dp[i-coins[j]]+1change:

#无解的情况,初始化的时候设置dp[change]=change+1

return -1

else:

return dp[change]

def used_coins(change,used_coins):

'''利用used_coins求解使用的钱币'''

re=[]

while change:

#dp[i]=dp[i-coins[j]]+1 used_coins[change]=coins[j]

tmp=used_coins[change]

re.append(tmp)

change-=tmp

return re

if __name__=='__main__':

#初始化

coins=[1,2,5,7,10]

change=16

dp=[change+1]*(change+1)

dp[0]=0

coins_used=[0]*(change+1)

re=coin_change(coins,change,dp,coins_used)

re_coins=used_coins(change,coins_used)

print("找零{0}元需要{1}张钱币,分别是{2}".format(change,re,re_coins))

执行结果:

找零16元需要3张钱币,分别是[1, 5, 10]

python找零_python 找零问题 动态规划相关推荐

  1. python找色_python 找图色

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! ifa.get(result):print(a.get(result))执行输出 ...

  2. python找零_Python 找零问题

    #coding = utf-8 def Change_Money(money): print('总金额:'+str(money)+'元') loop=True tmp=[] # 面值列表 单位:元 t ...

  3. python入门心得_python入门零基础心得(一)

    现阶段不是三旬吐槽课程安排,作为一名金融专业的大二学生来说除了大一上学期学习一门C语言基础外,XX并没有进行深入教学,三旬只能利用课余时间深入学习程序语言以及Linux操作等等,沉淀时间实现自我增值. ...

  4. 盘点一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列

    一.前言 前几天在Python交流群中遇到一个问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下. 数据截图如下 ...

  5. 2225. 找出输掉零场或一场比赛的玩家

    2225. 找出输掉零场或一场比赛的玩家 给你一个整数数组 matches 其中 matches[i] = [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri ...

  6. python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...

  7. 查看python安装位置图_python安装路径怎么找

    python安装路径怎么找? 在使用python的时候,有时候会需要找到python包的安装位置,来找其他安装的第三方包.下面我们来看看,在Linux平台上,怎么找到python的安装路径. Linu ...

  8. python判断成语_python实现成语找一找

    网上经常有些从N个字里面找成语的小游戏,那么怎么用python把成语组合找出来呢? 准备词典 从网上下载一个成语的词典.每行一个成语,保存成 word.txt. 代码实现 1.构建一个首字-成语的字典 ...

  9. 自学python方法-从零开始自学python编程,你找对方法了吗?

    原标题:从零开始自学python编程,你找对方法了吗? 适合初学者入门 其实python非常适合初学者入门.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易.自带的各种模块加上丰富的第三方 ...

最新文章

  1. SM50强制终结后台JOB进程
  2. Golang笔记—文件操作
  3. 【五级流水线CPU】—— 7. 协处理器访问指令(2条)
  4. 找个轻量级的Log库还挺难
  5. CentOS 7 使用ip addr查询不到IP
  6. 卡巴斯基最新激活码、授权文件,可用卡巴斯基
  7. 延迟队列DelayQueue研究
  8. 什么是架构师?Java架构师一般多少年薪呢?
  9. 易语言 文件捆绑机的原理【转载】
  10. 专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)...
  11. Hadsky_v6.4.2轻论坛短信插件
  12. 春风十里不如你、与IPC的邂逅
  13. 如何将word文档内容在网页显示方法
  14. python —— 使用sympy模块求解数学方程
  15. 【基础知识】~ FIFO
  16. Aurora---前后端分离博客
  17. 武汉php前景,武汉光谷东发展前景怎么样?看完你就明白了
  18. 五.软件相关(各种各样的手机和电脑软件, 急速提升你使用手机和电脑的效率, 大大方便你的生活)
  19. Mockito 也能 Mock final 类和 final 方法了
  20. Scala自学教程持续更新

热门文章

  1. 异地购房提取北京公积金说查不到贷款信息是怎么回事
  2. 学习笔记:Oracle函数大全
  3. java校验集装箱柜号是否正确
  4. 《数据结构》课程介绍
  5. 伤感日志_茫茫天涯走遍,寂寞心酸
  6. Maya v1.0.7.0 类似Rolan简洁小巧简单易用的快速启动工具
  7. 深度学习平台——常用图像标注工具
  8. 仿微信悬浮通知栏/横幅通知
  9. Python程序员的浪漫-实现每天定时给Ta推送微信公众号消息提醒超详细教程
  10. 《点燃我温暖你》中李峋的同款爱心代码