//全排列
func permute(nums []int) [][]int {
ret := make([][]int,0)
permute_(nums,0,&ret)
return ret
}
func permute_(nums []int, begin int, ret *[][]int){
if begin >= len(nums) -1 {
*ret = append(*ret,append([]int(nil),nums...))
} else {
for i := begin;i< len(nums); i++ {
nums[begin],nums[i] = nums[i],nums[begin]
permute_(nums,begin+1,ret)
nums[begin],nums[i] = nums[i],nums[begin]
}
}
}
//字符串的子集
func SubSet(arr []int)
{
max_num = 1<<len(arr); //2^n
for i := 0; i<maxnum; i++ { //处理0到2^n-1之间的数字
for j := 0; j<n; j++ { //j表示二进制右数第几位
{
if (i&(1<<j)) != 0 { //表示当前位不为0,则需要打印相应的字母
{
fmt.Println(arr[j])
}
}
fmt.Println()
}
}