DFS/回溯算法

2022/4/5 22:19:09

本文主要是介绍DFS/回溯算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

回溯算法模板:

result = []
def backtrack(路径, 选择列表):
 if 满⾜结束条件:
 result.add(路径)
 return
 for 选择 in 选择列表:
 做选择
 backtrack(路径, 选择列表)
 撤销选择

  

力扣46题

func permute(nums []int) [][]int {
	ans := make([][]int, 0)
	track := make([]int, 0)
	visited := map[int]bool{}
	sort.Ints(nums)

	var backtrack func()
	backtrack = func() {
		if len(track) == len(nums) {
			ans = append(ans, append([]int{}, track...))
			return
		}
		for i := 0; i < len(nums); i++ {
			if visited[i] {
				continue
			}
			visited[i] = true
			track = append(track, nums[i])
			backtrack()
			visited[i] = false
			track = track[:len(track)-1]
		}
	}
	backtrack()
	return ans
}

  



这篇关于DFS/回溯算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程