赞
踩
面值1,2,5
兑换7元
最少用多少张纸币
1.递归法求解
- #1,2,5 兑换7元 用最少几个纸币
- s=list(map(int,input().split(",")))
- m=int(input())
- n=len(s)
- count=0
- sum=0
- jishu=[]
- fafang=[]
- def find(s,c):
- global sum,count
- if c==0:
- jishu.append(count)
- # print(fafang)
- if c < 0:
- return
- if c>0:
- for i in range(n):
- sum=sum+s[i]
- count=count+1
- # fafang.append(s[i])
- find(s,c-s[i])
- sum=sum-s[i]
- count=count-1
- # fafang.remove(s[i])
- find(s,m)
- if len(jishu)==0:
- print(-1)
- else:
- print(min(jishu))

2.动态规划方法(参考运筹学)
- mount=7
- dp=[mount+1]*(mount+1)
- coins=[1,2,5]
- dp[0]=0
- for i in range(1,mount+1):
- for coin in coins:
- if i-coin>=0:
- dp[i]=min(dp[i],1+dp[i-coin])
- print(dp)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。