首页 > 代码库 > projecteuler---->problem=31----Coin sums 无限背包计算可能存在的次数
projecteuler---->problem=31----Coin sums 无限背包计算可能存在的次数
Problem 31
In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:
1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).
It is possible to make £2 in the following way:
1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p
How many different ways can £2 be made using any number of coins?
import time def cal(sum,count,value): if sum == 200: count += 1 return if sum > 200 : return for i in range(0,8): sum += value[i] cal(sum,count,value) sum -= value[i] begin = time.time() num={1,2,5,10,20,50,100,200}; num=list(num) count=0 cal(0,count,num) end = time.time() print count print end-begin
第一种办法,深搜超时
# # 解析:每次从列表中取出最大的coin值,得到取最大值个数的上限 # 个数叠加,接下来的用较小的数凑。 # # def cal(value, coins): if value =http://www.mamicode.com/= 0 or len(coins)==1 :>
第二种 贪心凑极值 AC
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。