# encoding=utf-8
class Solution(object):
def judge(self, special, needs):
for i in range(len(needs)):
if special[i] > needs[i]:
return False # 题目要求不能超出待购物品的数量。
return True
def shoppingOffers(self, price, special, needs):
"""
:type price: List[int]
:type special: List[List[int]]
:type needs: List[int]
:rtype: int
"""
res = 0
for i in range(len(needs)):
res += price[i] * needs[i]
for i in range(len(special)):
if self.judge(special[i], needs):
new_needs = []
for j in range(len(needs)):
new_needs.append(needs[j] - special[i][j])
curr_cost = self.shoppingOffers(price, special, new_needs) + special[i][-1]
res = min(res, curr_cost)
return res
# print Solution().shoppingOffers([2, 5], [[3, 0, 5], [1, 2, 10]], [3, 2])