LeetCode 638 大礼包

mac2026-02-06  0

大礼包

题目

思路

有人用状压做的,不太喜欢,所以我用的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; } };
最新回复(0)