本文主要是介绍LeetCode 638 大礼包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大礼包
题目
思路
有人用状压做的,不太喜欢,所以我用的dfs,写起来要清晰许多。
代码
class Solution {
public:int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs) {int sum=0;for(int i=0;i<price.size();i++)sum+=price[i]*needs[i];for(int i=0;i<special.size();i++){bool f=1;int j;for(j=0;j<price.size();j++){if(needs[j]<special[i][j]) f=0;needs[j]-=special[i][j];}if(f) sum=min(sum,shoppingOffers(price,special,needs)+special[i][j]);for(int j=0;j<price.size();j++)needs[j]+=special[i][j];}return sum;}
};
这篇关于LeetCode 638 大礼包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!