package Backtrack
func subsets(nums []int) [][]int {
result := make([][]int, 0)
size := len(nums)
path := make([]int, 0)
var f func(int)
f = func(i int) {
if i == size {
tmp := make([]int, len(path))
copy(tmp, path)
result = append(result, tmp)
return
}
f(i + 1)
path = append(path, nums[i])
f(i + 1)
path = path[:len(path)-1]
}
f(0)
return result
}