当前位置:   article > 正文

硬币兑换问题 蓝桥杯省赛python 递归和动态规划求解_蓝桥杯硬币兑换

蓝桥杯硬币兑换

题目

面值1,2,5

兑换7元

最少用多少张纸币

代码

1.递归法求解

  1. #1,2,5 兑换7元 用最少几个纸币
  2. s=list(map(int,input().split(",")))
  3. m=int(input())
  4. n=len(s)
  5. count=0
  6. sum=0
  7. jishu=[]
  8. fafang=[]
  9. def find(s,c):
  10. global sum,count
  11. if c==0:
  12. jishu.append(count)
  13. # print(fafang)
  14. if c < 0:
  15. return
  16. if c>0:
  17. for i in range(n):
  18. sum=sum+s[i]
  19. count=count+1
  20. # fafang.append(s[i])
  21. find(s,c-s[i])
  22. sum=sum-s[i]
  23. count=count-1
  24. # fafang.remove(s[i])
  25. find(s,m)
  26. if len(jishu)==0:
  27. print(-1)
  28. else:
  29. print(min(jishu))

2.动态规划方法(参考运筹学)

  1. mount=7
  2. dp=[mount+1]*(mount+1)
  3. coins=[1,2,5]
  4. dp[0]=0
  5. for i in range(1,mount+1):
  6. for coin in coins:
  7. if i-coin>=0:
  8. dp[i]=min(dp[i],1+dp[i-coin])
  9. print(dp)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/431926
推荐阅读
相关标签
  

闽ICP备14008679号