美文网首页
回溯算法解决全排列问题

回溯算法解决全排列问题

作者: 小怪兽狂殴奥特曼 | 来源:发表于2020-04-02 12:05 被阅读0次
package main

import (
    "fmt"
    "container/list"
)

var result *list.List
func ListDump(l *list.List) {
    for e:=l.Front();e!=nil;e=e.Next() {
        switch v:=e.Value.(type) {
        case int:
            fmt.Printf("%v\t",v)
        case *list.List:
            ListDump(v)
        default:
            fmt.Println("unknown type:%v", v)
        }   
    }
    
    fmt.Printf("----\n");
}



func ListCopy(l *list.List) *list.List {
    nl := list.New()
    for e:=l.Front();e!=nil;e=e.Next() {
        nl.PushBack(e.Value.(int))
    }

    return nl
}

func SliceCopy(o []int, idx int) []int {
    n := make([]int, idx)
    copy(n,o[:idx])
    n = append(n,o[idx+1:]...)
    return n
}


var result2 *list.List

func backtrack2(path *list.List, choices []int) {
    // 啥时候结束
    if len(choices)==0 {
        // 添加路径
        result2.PushBack(ListCopy(path))
        return
    }


    for i,v := range choices {
        //做选择
        left_choice := SliceCopy(choices,i)
        t := path.PushBack(v)
        //进入回溯
        backtrack2(path, left_choice)
        //撤销选择
        path.Remove(t)      
    }
}

func permute2(nums []int) {
    path := list.New()
    backtrack2(path, nums)
}

func main() {
    result2 = list.New()
    permute2([]int{1,2,3,4,5})
    ListDump(result2)
}

相关文章

  • 回溯算法解决全排列问题

  • 「回溯算法」专题介绍

    「回溯算法」专题介绍 第 1 节:从全排列问题开始理解回溯搜索算法 引言 大家好,今天要和大家分享的主题是“回溯算...

  • 4.2 回溯法(2)

    套路 解决全排列问题可以用到回溯 全排列问题往往可以用交换两位置元素的方法,完成后续步骤后,需要回溯时再交换回原来...

  • 回溯法解决全排列问题

    基本思想是不断的扩大排序的规模public class Solution{ public void permuta...

  • 739. 每日温度/46. 全排列

    739. 每日温度 相关标签 : 哈希表 栈 46. 全排列 相关标签: 回溯算法

  • 生成全排列算法(Scala和C++实现)

    全排列问题描述为:给定一串数字,生成所有可能的排列。本文给出两类,一种使用C++通过回溯算法,一种使用Scala通...

  • 从全排列看回溯算法

    从全排列看回溯算法 最近又刷起了算法,仿佛回到了大一时奋战到深夜场景,走上社会之初发现大学里学的都是啥玩意儿,工作...

  • leetcode第46题:全排列 [中等]

    题目描述 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 考点 回溯算法 深度优先搜索 解题思路 回溯算...

  • 回溯--全排列

    目录[https://www.jianshu.com/p/85e18c21317a] 题号[https://lee...

  • 排列,组合,子集专题

    排列组合的题用回溯法和递归基本可以解决,总结一下。46.全排列 47.全排列II 47比46多了个序列可重复的条件...

网友评论

      本文标题:回溯算法解决全排列问题

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