日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

子集(TX)

發布時間:2024/4/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子集(TX) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路

求子集問題和回溯算法:求組合問題!和回溯算法:分割問題!又不一樣了。

如果把 子集問題、組合問題、分割問題都抽象為一棵樹的話,「那么組合問題和分割問題都是收集樹的葉子節點,而子集問題是找樹的所有節點!」

其實子集也是一種組合問題,因為它的集合是無序的(順序怎樣都沒關系),子集{1,2} 和 子集{2,1}是一樣的。

「那么既然是無序,取過的元素不會重復取,寫回溯算法的時候,for就要從startIndex開始,而不是從0開始!」


從圖中紅線部分,可以看出「遍歷這個樹的時候,把所有節點都記錄下來,就是要求的子集集合」。

class Solution { public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums,int startIndex){if(startIndex>=nums.size()){return;}for(int ii=startIndex;ii<nums.size();ii++){path.push_back(nums[ii]);res.push_back(path);backtracking(nums,ii+1);path.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {backtracking(nums,0);res.push_back({});return res;} }; class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {result.push_back(path); // 收集子集if (startIndex >= nums.size()) { // 終止條件可以不加return;}for (int i = startIndex; i < nums.size(); i++) {path.push_back(nums[i]);backtracking(nums, i + 1);path.pop_back();}} public:vector<vector<int>> subsets(vector<int>& nums) {result.clear();path.clear();backtracking(nums, 0);return result;} };

class Solution { public:vector<vector<int>> res;vector<int> path;void backtracking(vector<int>& nums,int startIndex,vector<bool>& used){res.push_back(path);if(startIndex>=nums.size()){return;}for(int ii=startIndex;ii<nums.size();ii++){if(ii>0&&nums[ii-1]==nums[ii]&&used[ii-1]==false) continue;path.push_back(nums[ii]);used[ii]=true;backtracking(nums,ii+1,used);path.pop_back();used[ii]=false;}}vector<vector<int>> subsetsWithDup(vector<int>& nums) {vector<bool> used(nums.size(),false);sort(nums.begin(),nums.end());backtracking(nums,0,used);return res;} };

總結

以上是生活随笔為你收集整理的子集(TX)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。