zoukankan      html  css  js  c++  java
  • 全排列和全组合

    def combinations(arr,num):
        def solver(arr,num,ans,cur,s):
            print(s,'cur',cur)
            if len(cur)==num:
                ans.append(cur[::])
                return 
            for i in range(s,len(arr)):
                cur.append(arr[i])
                solver(arr,num,ans,cur,i+1)
                cur.pop()
        ans=[]
        cur=[]
        solver(arr,num,ans,cur,0)
        return ans
    
    def permutation(arr,num):
        def solver(arr,num,ans,cur):
            if len(cur)==num:
                print(cur)
                ans.append(cur[::])
                return 
            for a in arr:
                if a in cur:
                    continue
                cur.append(a)
                solver(arr,num,ans,cur)
                cur.pop()
    
        ans=[]
        cur=[]
        solver(arr,num,ans,cur)
        return ans      
    
    class Solution:
        def permute(self, nums: List[int]) -> List[List[int]]:
            if len(nums) <= 1:  # 递归终止条件
                return [nums]
            res = []
            for idx, num in enumerate(nums):
                res_nums = nums[:idx] + nums[idx + 1:]  # 确定剩余元素
                for j in self.permute(res_nums):  
                    res.append([num] + j)
            return res
    
    
    if __name__=="__main__":
        #arr = [3,4,5,6,7,9] # 非重复
        arr = [3,4,5,6] # 非重复
        num = 3
        #result = combinations(arr,num)
        result = permutation(arr,num)
        print(result)
    
    输入重复数组如何处理??
    
  • 相关阅读:
    初识DJango框架
    web框架基础
    前端——JavaScript
    前端——css(下)
    前端——css(上)
    前端——html
    spring注解
    spring boot 详解(1)spring boot +mybatis+mysql+jsp
    spring 事务控制
    maven pom文件管理
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13085652.html
Copyright © 2011-2022 走看看