leetcode 638 -大礼包
作者:互联网
最多6种,所以时间上挺宽松的。dp式min(res,dp()+当前大礼包的价值),每次得判断一次,这个大礼包是否能够使用,即使用大礼包里的数目与需求比较一下。
class Solution { public: int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs) { int res=0;int len= needs.size(); for(int i =0;i<len;i++) { res+=price[i]*needs[i]; } for(auto item:special) { int flag=1; for(int i=0;i<len;i++) { if(needs[i]<item[i]) { flag=0; } needs[i]=needs[i]-item[i]; } if(flag) res=min(res,shoppingOffers(price,special,needs)+item.back()); for(int i=0;i<len;i++) { needs[i]=needs[i]+item[i]; } } return res; } };
标签:needs,638,res,大礼包,int,vector,leetcode,dp 来源: https://www.cnblogs.com/biubiuWham/p/10484814.html