特殊的方法-循环:

#无法解决某些情况,例如存在21元的零钱

def fun(n):

count = 0

while n > 25:

n = n - 25

count = count + 1

while n > 10:

n = n - 10

count = count + 1

while n > 5:

n = n - 10

count = count + 1

while n > 0:

n = n - 1

count = count + 1

return count

print(fun(63))

特殊的方法 - 递归:

def fun(n): # 分好类

if n <= 0:

return 0

elif n >= 25:

return 1 + fun(n-25)

elif n >= 10:

return 1 + fun(n-10)

elif n >= 5:

return 1 + fun(n-5)

elif n >= 1:

return 1 + fun(n-1)

print(fun(25))

递归 + 记忆:

import time

def recMD(valueList, change, Knowlist):

minNum = change

if change in valueList: # 可以作为结束条件

Knowlist[change] = 1

return 1

elif Knowlist[change] > 0: # 回忆

return Knowlist[change]

else:

for i in [c for c in valueList if c <= change]: # 常用

num = 1 + recMD(valueList, change - i, Knowlist)

if num < minNum:

minNum = num

Knowlist[change] = minNum

return minNum # 最后记得要返回

print(time.process_time()) # time.clock()被抛弃

print(recMD([1, 5, 10, 25], 77, [0]*79)) # 创建全为0的表

print(time.process_time())

递归 + 记忆 + 输出过程:

import time

from pythonds.basic.stack import Stack

def dp(valueList, change, minNum, coinUsed): # minNum初始化为0,之后需要利用到这些数据

for cents in range(1, change+1): # 从小到大递推

coinCount = cents # 初始化一个无害的最小值

newCoin = 1

for j in [c for c in valueList if c <= cents]: # 常用技巧

if 1 + minNum[cents-j] < coinCount:

coinCount = 1 + minNum[cents - j]

newCoin = j

minNum[cents] = coinCount

coinUsed[cents] = newCoin # 每一个change的最优解都是由两部分组成,这里是记录其中一部分

return minNum[change]

def printSelection(change, coinused):

coin = change

s = Stack()

while coin > 0:

thisCoin = coinused[coin]

s.push(thisCoin)

coin = coin - thisCoin

while not s.isEmpty():

print(s.pop())

valList = [1, 5, 10, 25]

amnt = 63

minN = [0]*64

coinUsed = [0]*64

print(dp(valList, amnt, minN, coinUsed)) # 创建表的方式get

print(coinUsed[1:]) # 打印全部

printSelection(amnt, coinUsed) # 打印组成部分

备注:

动态规划解法的必要条件:问题的最有解包含了更小规模的最优解,即每一步都要依靠前面某步的最优解

Talk is cheap. Show me the code. 将算法思路转化成具体代码需要不断实践,积累经验

python找零钱_Python递归 - 找零钱相关推荐

  1. python换零钱_Python算法之零钱兑换问题的解法

    比如:顾客购物买37元东西,给了100元,要找63元,那最少数量就是1张50元,1张10元,3张1元,一共4张. 方法一: 贪心策略 解决这个问题,最直观的就是使用贪心策略.我们会从最大面值的钱开始, ...

  2. python找钱_python 递归 找零钱

    首先回答你的问题 count = 1 + coins_changeREC(coin_values, change-value)#1.when reached here, one recursion l ...

  3. python黑洞数_Python练习 找黑洞数

    #YYY BFSU 找黑洞数 n=str(input('please input a four-digit number\n')) a=list(n) a.sort() b=a[::-1] p=int ...

  4. python找人_python之找最后一个人

    题目大概是:有10个人围成一圈,从第一个人数,数到3的人出局,问最后一个人是谁? 围成一圈,那就是无限循环,直至最后一个人,我们可以把10个人看做一个列表,每循环一次就把除3为0的数去除,下次再次循环 ...

  5. python静态递归函数_Python递归函数相关

    函数中调用其他函数是解决实际问题中常用方法,递归函数便是函数在运行过程中调用自身的函数.它像是循环的另一种表达方式,不过相较于写循环,递归函数封装性较好.可读性较强.在解决一些循环问题时,使用递归函数 ...

  6. python找不到了_python包找不到

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我有一个名为dns_poison.py的文件需要调用名为netscanner的包 ...

  7. python通过路径找文件_Python寻找路径和查找文件路径的示例

    怎么python系统的查找路径要是爱你爱的少些,话就可以说的多些了.简?奥斯汀 ⒈单击开始,在搜索框输入cmd,然后回车,就会出现命令行界面框后,在里面输入命令python后回车,安装成功的话就可以看 ...

  8. python冒泡排序算法非递归_python 冒泡排序,递归

    今天LeetCode的时候暴力求解233 问题: 给定一个整数 n,计算所有小于等于 n 的非负数中数字1出现的个数. 例如: 给定 n = 13, 返回 6,因为数字1出现在下数中出现:1,10,1 ...

  9. 递归找出文件夹里面所有文件

    //递归找出文件夹里面所有文件 public static void main(String[] args) { File f=new File("c://123"); findF ...

最新文章

  1. Coding-数组(Array)
  2. 导师吐槽大会开始:自己招的学生,哭着也要带完
  3. 语义SLAM开源代码汇总
  4. MVC Razor 语法(转)
  5. 浅议gRPC的数据传输机制和回调机制
  6. 关于MySQL的死锁问题
  7. 《CSDN好师父》给你更好选择:“深圳工资、长沙房价、全球视野”
  8. java 植入 form_pdf form表单制作以及用java程序填充表单
  9. 20岁黑客发现苹果核心 web 应用中的严重漏洞,获奖$3.6万
  10. anndroid 之 Intent(意图)使用示例
  11. VOA ECONOMICS REPORT - Nearly Half of US Jobs Now Held by Women
  12. 价格便宜一半 这款智能座舱芯片实际性能却超越高通8155?
  13. SIEBEL应用概述
  14. 通过shell命名和TexturePacker工具,将.pvr.ccz批量转换为png格式
  15. EXCEL生成正态分布随机数据
  16. PYNQ-Z2上手笔记之系统安装
  17. 五分钟讲透开关电源buck降压基本原理
  18. 阿德莱德大学计算机专业学费,阿德莱德大学费用清单
  19. 1个系统节拍 c语言_【菜鸡C语言】菜鸡鼓起勇气用Dev-c++打起节奏来了
  20. TypeScripe中那些奇奇怪怪的符号?!??

热门文章

  1. NeurIPS 2020不用抢票了!官方宣布改线上举办,网友:nice!已白嫖3个顶会
  2. 论文LaTeX、项目README:无脑套用格式、开源模板最高10万赞
  3. 博士称因待遇不公要离职,被学校要求返还51万元补偿费
  4. 阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理
  5. 身边的隐形富豪,都有哪些特征?
  6. 熬夜与不熬夜,10年后差距到底有多大?惊了!
  7. 张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质!
  8. Celery 进阶使用
  9. 特征选择-处理缺失值-处理不平衡的数据-处理异常值-分档-编码-特征缩放
  10. 计算机视觉方向简介:深度图补全