博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构和算法】【刷题】回溯法
阅读量:4101 次
发布时间:2019-05-25

本文共 1507 字,大约阅读时间需要 5 分钟。

1.回溯法 

参考1.

       2. 

2.leetcode 78.子集

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

示例:

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

输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

 

class Solution:    def subsets(self, nums: List[int]) -> List[List[int]]:        result = []                def dfs(lst ,nums , pos):            # pos是lst的尾巴,用于:之后的数字选择只能在pos之后            result.append(lst[:])#复制lst            for i in range(pos,len(nums)):                lst.append(nums[i])                dfs(lst,nums,i+1)                lst.pop()#为了返回同期的上一层                dfs([],nums,0)        return result

3.leetcode77 组合

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]

class Solution:    def combine(self, n: int, k: int) -> List[List[int]]:        lst =[]        result = []        def dfs(first,lst):            if len(lst) == k:                result.append(lst[:])            for i in range(first,n+1):                lst.append(i)                dfs(i+1,lst)                lst.pop()        dfs(1,lst)        return result

4 排列问题

[红、黄、蓝、绿]四本书有几种排列方式

思路: solution中通过递归的方法添加完数组中的第一本书;再通过for回溯到原数组,solution添加第二本,再递归

class Solution():    def solveit(self,array):        self.helper(array,[])    def helper(self,array,solution):        if len(array)==0:            print(solution)            return         for i in range(len(array)):            newsolution = solution+[array[i]]            newarray = array[:i]+array[i+1:] #删除第i个            self.helper(newarray,newsolution)

 

转载地址:http://derii.baihongyu.com/

你可能感兴趣的文章
医学遗传学词汇英语术语英文(Glossary) 3
查看>>
函数指针
查看>>
[EMWIN]FRAMEWIN 与 WINDOW 的使用注意
查看>>
cookie注入脚本
查看>>
完全平方数 (Square Numbers,UVa 11461)
查看>>
ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
查看>>
如何解决“不能打开数据库,用户NT AUTHORITY\NETWORK SERVICE登录失败”的错误呢?...
查看>>
slidingmenu能否实现菜单页在内容页上方,而不是把内容页挤到一边去????...
查看>>
FLINK流计算拓扑任务代码分析<二>
查看>>
关于word2007 2010中使用endnote插入文献巨卡的问题
查看>>
分享:我用一天时间开发的 新年送祝福 微信手机网站(可在线体验附图)(要代码的留下邮箱)...
查看>>
关于JSON字符串
查看>>
如何一步一步用DDD设计一个电商网站(二)—— 项目架构
查看>>
服务器安全部署文档
查看>>
【转】Ext配合ArcGIS JavaScript快速搭建地图系统
查看>>
数组、List和ArrayList的区别
查看>>
使用cnpm(淘宝npm镜像)
查看>>
GIT
查看>>
js 时间戳转换成几分钟前,几小时前,几天前
查看>>
Android ScrollView+ViewPager+PullToRefreshListView
查看>>