(M)Dynamic Programming,DFS:Shopping Offers

来源:互联网 发布:怎样做seo 编辑:程序博客网 时间:2024/06/03 03:48

z这个题并不知道怎么用DP,感觉第一想到的是暴力递归,类似背包问题。看了别人的答案写的:

class Solution {public:    int shoppingOffers(vector<int>& price, vector<vector<int>>& special, vector<int>& needs) {        int n = price.size(), res = 0;        for(int i = 0; i < n; ++i)        {            res += needs[i] * price[i];        }        for(vector<int> s : special)        {            vector<int> clone(needs);            int i = 0;            for(i = 0; i < n; ++i)            {                if(clone[i] - s[i] < 0)                    break;                else                    clone[i] -= s[i];            }            if(i == n)                res = min(res, s[i] + shoppingOffers(price, special, clone));        }        return res;    }};


原创粉丝点击