LeetCode题库77.组合——dfs典型解法,递归+回溯+剪枝

发布时间 2023-08-27 11:24:04作者: Aneverforget

 

class Solution:
    def combine(self, n: int, k: int):
        nums=[x+1 for x in range(n)]
        res,ans=[],[]
        def dfs(nums:list[int]):   
            if len(ans)==k:
                ans_copy=ans.copy()#复制,避免ans数组改变使res跟着改变
                res.append(ans_copy)
                return
            for c,i in enumerate(nums[:n-(k-len(ans))+1]):
                ans.append(i)
                dfs(nums[c+1:])
                ans.pop()
        dfs(nums)
        return res


try:
    solution=Solution()
    res=solution.combine(4,2)
    print(res)
    solution=Solution()
    res=solution.combine(4,3)
    print(res)
except:
    print('error')