leetcode 组合总和 中等

 

 

完全背包。但是用搜索好像更好。

贴完全背包的代码

class Solution {
public:
    vector<vector<int>> combinationSum(vector<int> &candidates, int target) {
        vector<vector<int>> ans[510];
        ans[0].emplace_back();
        // dp[i] 表示 和为 i 的方案数
        for (int j = 0; j < candidates.size(); ++j) {
            for (int i = candidates[j]; i <= target; ++i) {
                    // dp[i] += dp[i - candidates[j]]
                    for (auto &item : ans[i - candidates[j]]) {
                        item.push_back(candidates[j]);
                        ans[i].emplace_back(item);
                        item.pop_back();
                    }
            }
        }
        return ans[target];
    }
};

 

posted @ 2021-08-07 11:38  rookie_Acmer  阅读(22)  评论(0)    收藏  举报