zoukankan      html  css  js  c++  java
  • 78. 子集 力扣(中等) 回溯

    题目描述:

    给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

    解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

    示例 1:

    输入:nums = [1,2,3]
    输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

    题源:https://leetcode-cn.com/problems/subsets/

    题解:回溯就完事了,主要是范围很小,只有10位,且每个数字都不同,解空间就2^10

    代码:

    class Solution {
    public:
        int l;
        vector<vector<int>>ans;
        vector<int> subans;
        void dfs(int k,vector<int> num)
        {
            if(k>=l)
            {
                ans.push_back(subans);
                return;
            } 
            subans.push_back(num[k]);
            dfs(k+1,num);
            subans.pop_back();
            dfs(k+1,num);
            return;
        }
        vector<vector<int>> subsets(vector<int>& nums) {
         l=nums.size();
         subans.clear();
         ans.clear();
         dfs(0,nums);
         return ans;
        }
    };
  • 相关阅读:
    UVa 727
    UVa 11495
    UVa 299
    UVa 10194
    UVa 146
    10025
    Tug of War POJ 2576 DP(类似背包)
    Problem A: Freckles UVA 10034 裸生成树
    UVA 562
    CF DIV 2 206 C. Vasya and Robot
  • 原文地址:https://www.cnblogs.com/stepping/p/15056309.html
Copyright © 2011-2022 走看看