LeetCode(39)


class Solution {
public:
    vectorint>> combinationSum(vector<int>& candidates, int target) {
        sort(candidates.begin(),candidates.end());
        vectorint>>v,result;
        vector<int>v2;
        mapint>,int>mp;
        int n = candidates.size(),sum,t,n2,n3;
        v.push_back(v2);
        // for(int i=0;i//     cout<// }
        // cout<
        mp[v2] = 0;
        for(int i=0;i){
            n2 = v.size();
            for(int k=0;k){
                // bool flag = false;
                for(int j=1;mp[v[k]]+j*candidates[i]<=target;j++){
                    v2 = v[k];
                    v2.push_back(candidates[i]);
                    v2.push_back(j);
                    if(mp[v[k]]+candidates[i]*j<=target){
                        v.push_back(v2);
                        mp[v2] = mp[v[k]]+candidates[i]*j;
                        // for(int l=0;l//     for(int m=0;m//         cout<//     }
                        //     cout<// }
                        // cout<// flag = true;
                    }
                }
                // if(!flag)break;
            }
        }
        n2 = v.size();
        for(int i=0;i){
            if(mp[v[i]]==target){
                n3 = v[i].size();
                v2.clear();
                for(int j=0;j2){
                    for(int k=0;k1];k++){
                        v2.push_back(v[i][j]);
                    }
                }
                result.push_back(v2);
            }
        }
        sort(result.begin(),result.end());
        return result;
    }
private:
    bool isSame(vectorint>>v,vector<int>v2){
        int n = v.size(),m = v2.size();
        for(int i=0;i){
            int p = v[i].size();
            if(p==m){
                bool flag = true;
                for(int j=0;j){
                    if(v[i][j]!=v2[j]){
                        flag = false;
                        break;
                    }
                }
                if(flag)
                    return true;
            }
        }
        return false;
    }
};