子集

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)
}