1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
   | package main
  import "fmt"
  func subsets(nums []int) [][]int { 	result := [][]int{} 	backtrack(nums, []int{}, &result, 0) 	return result }
  func backtrack(nums, current []int, result *[][]int, start int) { 	temp := make([]int, len(current)) 	copy(temp, current) 	*result = append(*result, temp)
  	for i := start; i < len(nums); i++ { 		current = append(current, nums[i]) 		backtrack(nums, current, result, i+1) 		current = current[:len(current)-1] 	} }
  func main() { 	 	nums := []int{1, 2, 3}
  	 	result := subsets(nums)
  	 	fmt.Println("所有可能的子集:", result) }
 
   |