| 12345678910111213141516171819202122232425262728293031 | package mainfunc combine(nums []int, k int) (res [][]int) {	n := len(nums)	if n == k || k == 0 {		row := make([]int, k)		for i := range row {			row[i] = nums[i]		}		return append(res, row)	}	// C(k)(n) = C(k-1)(n-1) + C(k)(n-1)	for _, row := range combine(nums[:n-1], k-1) {		row = append(row, nums[n-1])		res = append(res, row)	}	res = append(res, combine(nums[:n-1], k)...)	return}func subsets(nums []int) (res [][]int) {	for i := 0; i <= len(nums); i++ {		res = append(res, combine(nums, i)...)	}	return}/* func main() {	a1 := []int{1, 2, 3}	fmt.Println(subsets(a1))} */
 |