题目描述链接:https://leetcode-cn.com/problems/increasing-subsequences/
基本思路:DFS+哈希
LeetCode C++ 求解代码:
class Solution { public: set<vector<int>> record; vector<vector<int>>res; vector<vector<int>> findSubsequences(vector<int>& nums) { for(int i=0;i<nums.size();i++){ vector<int>ans; ans.push_back(nums[i]); dfs(nums,i,i,ans); } return res; } void dfs(vector<int>&nums,int i,int j,vector<int>ans){ if(j==nums.size()){ return ;//递归结束条件 } bool flag=0; if(i<j){ for(int k=0;k<ans.size();k++){ if(ans[k]>nums[j]){ flag=1; } } if(!flag){ ans.push_back(nums[j]); if(record.find(ans)==record.end()){ res.push_back(ans); record.insert(ans); } } } for(int x=j+1;x<nums.size();x++){ dfs(nums,i,x,ans); } if(!flag) ans.pop_back(); } };