LeetCode(39)
class Solution { public: vector<vector<int>> combinationSum(vector<int>& candidates, int target) { sort(candidates.begin(),candidates.end()); vector<vector<int>>v,result; vector<int>v2; map<vector<int>,int>mp; int n = candidates.size(),sum,t,n2,n3; v.push_back(v2); // for(int i=0;i<candidates.size();i++){ // cout<<candidates[i]<<" "; // } // cout<<endl; mp[v2] = 0; for(int i=0;i<n;i++){ n2 = v.size(); for(int k=0;k<n2;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<v.size();l++){ // for(int m=0;m<v[l].size();m++){ // cout<<v[l][m]<<" "; // } // cout<<endl; // } // cout<<endl; // flag = true; } } // if(!flag)break; } } n2 = v.size(); for(int i=0;i<n2;i++){ if(mp[v[i]]==target){ n3 = v[i].size(); v2.clear(); for(int j=0;j<n3;j+=2){ for(int k=0;k<v[i][j+1];k++){ v2.push_back(v[i][j]); } } result.push_back(v2); } } sort(result.begin(),result.end()); return result; } private: bool isSame(vector<vector<int>>v,vector<int>v2){ int n = v.size(),m = v2.size(); for(int i=0;i<n;i++){ int p = v[i].size(); if(p==m){ bool flag = true; for(int j=0;j<m;j++){ if(v[i][j]!=v2[j]){ flag = false; break; } } if(flag) return true; } } return false; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)