| 123456789101112131415161718192021222324252627282930 | type ints []intfunc (is ints) Len() int           { return len(is) }func (is ints) Less(i, j int) bool { return is[j] < is[i] }func (is ints) Swap(i, j int)      { is[i], is[j] = is[j], is[i] }func canPartition(nums []int) (ans bool) {	sum := 0	for _, i := range nums {		sum += i	}	if sum&1 == 1 {		return false	}	sort.Sort(ints(nums))	dfs(nums, len(nums), sum/2, 0, 0, 0, &ans)	return}func dfs(nums []int, n, sum, i, p1, p2 int, ans *bool) {	if *ans == true || sum < p1 || sum < p2 {		return	} else if i == n {		*ans = p1 == p2		return	}	dfs(nums, n, sum, i+1, p1+nums[i], p2, ans)	dfs(nums, n, sum, i+1, p1, p2+nums[i], ans)}
 |