回溯算法总结

经典题型  排列和组合

func permute(nums []int, idx int,
	p *[]int, visited *[]bool, res *[][]int) {
	if idx == len(nums) {
		tmp := make([]int, len(nums))
		copy(tmp, *p)
		*res = append(*res, tmp)
		return
	}
	for i, v := range nums {
		if !(*visited)[i] {
			(*visited)[i] = true
			*p = append(*p, v)
			permute(nums, idx+1, p, visited, res)
			(*visited)[i] = false
			*p = (*p)[:len(*p)-1]
		}
	}
}


版权声明:本文为kylin_xue原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。