我需要找到所有的组合花。花的数目只有奇数。购买金额不超过预定金额。在
def bouquets(narcissus_price, tulip_price, rose_price, summ):
count_combinations = 0
for n in xrange(int(summ / narcissus_price) + 1):
for t in xrange(int(summ / tulip_price) + 1):
if n * narcissus_price + t * tulip_price > summ:
break
for r in xrange([1,0][(n + t) % 2], int(summ / rose_price) + 1, 2):
if n * narcissus_price + t * tulip_price + r * rose_price > summ:
break
elif (n + t + r) & 1:
count_combinations += 1
return count_combinations
print bouquets(200, 300, 400, 100000) == 3524556 # large run-time
summ // tulip_price
,你可以在(summ - n * narcissus_price) // tulip_price
处停止r
的可能值的数目,而不必枚举它们示例:
对于给定的测试输入,这将运行时从2.33秒缩短到67.2毫秒(大约快35倍)。在
相关问题 更多 >
编程相关推荐