python找零_python 找零问题 动态规划
题目描述:
现有的钱币: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 找零问题 动态规划相关推荐
- python找色_python 找图色
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! ifa.get(result):print(a.get(result))执行输出 ...
- python找零_Python 找零问题
#coding = utf-8 def Change_Money(money): print('总金额:'+str(money)+'元') loop=True tmp=[] # 面值列表 单位:元 t ...
- python入门心得_python入门零基础心得(一)
现阶段不是三旬吐槽课程安排,作为一名金融专业的大二学生来说除了大一上学期学习一门C语言基础外,XX并没有进行深入教学,三旬只能利用课余时间深入学习程序语言以及Linux操作等等,沉淀时间实现自我增值. ...
- 盘点一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列
一.前言 前几天在Python交流群中遇到一个问了一个使用Python实现Excel中找出第一个及最后一个不为零的数,它们各自在第几列的问题,觉得还挺有用的,这里拿出来跟大家一起分享下. 数据截图如下 ...
- 2225. 找出输掉零场或一场比赛的玩家
2225. 找出输掉零场或一场比赛的玩家 给你一个整数数组 matches 其中 matches[i] = [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri ...
- python找色_python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Python图片处理模块PIL(pillow) pywin32的主要作用 1.捕获窗口: 2.模拟鼠标键盘动作: 3.自动获取某路径下文件列表: 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快 ...
- 查看python安装位置图_python安装路径怎么找
python安装路径怎么找? 在使用python的时候,有时候会需要找到python包的安装位置,来找其他安装的第三方包.下面我们来看看,在Linux平台上,怎么找到python的安装路径. Linu ...
- python判断成语_python实现成语找一找
网上经常有些从N个字里面找成语的小游戏,那么怎么用python把成语组合找出来呢? 准备词典 从网上下载一个成语的词典.每行一个成语,保存成 word.txt. 代码实现 1.构建一个首字-成语的字典 ...
- 自学python方法-从零开始自学python编程,你找对方法了吗?
原标题:从零开始自学python编程,你找对方法了吗? 适合初学者入门 其实python非常适合初学者入门.相比较其他不少主流编程语言,有更好的可读性,因此上手相对容易.自带的各种模块加上丰富的第三方 ...
最新文章
- SM50强制终结后台JOB进程
- Golang笔记—文件操作
- 【五级流水线CPU】—— 7. 协处理器访问指令(2条)
- 找个轻量级的Log库还挺难
- CentOS 7 使用ip addr查询不到IP
- 卡巴斯基最新激活码、授权文件,可用卡巴斯基
- 延迟队列DelayQueue研究
- 什么是架构师?Java架构师一般多少年薪呢?
- 易语言 文件捆绑机的原理【转载】
- 专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)...
- Hadsky_v6.4.2轻论坛短信插件
- 春风十里不如你、与IPC的邂逅
- 如何将word文档内容在网页显示方法
- python —— 使用sympy模块求解数学方程
- 【基础知识】~ FIFO
- Aurora---前后端分离博客
- 武汉php前景,武汉光谷东发展前景怎么样?看完你就明白了
- 五.软件相关(各种各样的手机和电脑软件, 急速提升你使用手机和电脑的效率, 大大方便你的生活)
- Mockito 也能 Mock final 类和 final 方法了
- Scala自学教程持续更新