美文网首页LeetCode
算法之 回溯一

算法之 回溯一

作者: 秸秆混凝烧结工程师 | 来源:发表于2021-02-24 18:54 被阅读0次

请看需求

给定一个没有重复数字的序列,返回其所有可能的全排列。示例:

输入:[1,2,3]

输出:

[

[1,2,3],

[1,3,2],

[2,1,3],

[2,3,1],

[3,1,2],

[3,2,1]

]



我们使用回溯法实现一下,一般法不写了,不说了,看图

图片源自网络

解释:

第一步,我们选择一个数字,比如1

第二步,就只能从2和3中间选择了,我们选择2,组成12

第三步,这次只有3了,没的选了,于是组成123

123就是一个结果,我们将其保存,这时候我们将第三步中的3删除,然后再回退到第二步(回溯)

由于在第二步中,我们已经选过2了,那么此时就只剩3让我们选了。

于是我们再次组成13

之后再次进入到第三步,这次只有2了,于是组成132

我们需要拼出1,通过1生成1,2和1,3

之后通过1,2生成1,2,3

通过1,3生成1,3,2

这里我们借助栈和队列的组合,实现的。

代码是基于来自IT界的泥石流修改而来


def  dfs(nums,arr):

        result =[]

      if len(nums)==0:

          Print(arr)

size=len (nums)

for  k  in  range (size):

      arr.append(nums.pop(k))

    dfs (nums,arr)

      nums.insert(k,arr.pop())

nums=[1,2,3]

arr=[]

dfs (nums,arr)

相关文章

  • 回溯算法

    回溯算法 回溯算法介绍   回溯算法并不是非常复杂的算法, 很多人接触过但是未必知道这是回溯算法; 典型的回溯算法...

  • [回溯算法]python解决N皇后问题(20行代码)

    如果读者对于回溯算法思路解法还不是很了解,可以先点击链接查阅我之前的一篇博文《算法之【回溯算法】详解[https:...

  • 算法之 回溯一

    请看需求 给定一个没有重复数字的序列,返回其所有可能的全排列。示例: 输入:[1,2,3] 输出: [ [1,2,...

  • 回溯算法:八皇后问题和0-1背包问题

    文章结构 如何理解回溯算法 回溯算法的经典应用 完整源码 图片来源 1. 如何理解回溯算法 1.1 什么是回溯算法...

  • Algorithm进阶计划 -- 回溯算法

    滑动窗口算法回溯算法框架回溯算法运用 1. 回溯算法框架 回溯算法,是类似枚举的搜索尝试过程,主要是在搜索尝试过程...

  • 回溯算法总结

    回溯法学习总结 回溯算法也是算法导论中常用的算法,回溯算法类似于暴力求解算法,经常用在求可能解的问题。下面我将从三...

  • 回溯算法之-组合总和

    回溯算法模版 首先上一套回溯算法模版,很多回溯算法都可以使用该模版解决 leetcode 39 组合总和 给定一个...

  • 算法之回溯算法详解

    回溯算法 定义 回溯算法实际上基于DFS(深度优先搜索)的一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问...

  • 递归2-回溯与递归

    I. 回溯算法基础 回溯与递归的区别和联系  很多人不理解回溯与递归到底是什么关系。其实很简单,回溯算法是一种算法...

  • 77. Combinations.go

    回溯算法

网友评论

    本文标题:算法之 回溯一

    本文链接:https://www.haomeiwen.com/subject/jpzsfltx.html