使用golang求出A-Z的所有子集
发布时间:2020-12-16 09:32:38 所属栏目:大数据 来源:网络整理
导读:参考链接:https://blog.csdn.net/K346K346/article/details/80436430 有一个集合由A-Z这26个字母组成,打印这个集合的所有子集,每个子集一行,写C代码实现,不能使用递归 假设只有三个字母ABC,那么子集有: {}ABCABACBCABC 把ABC看作三个比特位,分别为:
参考链接:https://blog.csdn.net/K346K346/article/details/80436430 有一个集合由A-Z这26个字母组成,打印这个集合的所有子集,每个子集一行,写C代码实现,不能使用递归 假设只有三个字母ABC,那么子集有: {}
A
B
C
AB
AC
BC
ABC
把ABC看作三个比特位,分别为: 000 100 010 001 110 101 011 111 具体代码: 这里需要注意一点的就是,golang使用位运算的时候,使用的基础数据类型是uint package main import ( "fmt" ) //输出所有的子集 //n是要输出的前几个字母 func CaptitalLetter(n uint) { letter := []string{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"} //这里为什么是2^n呢 //详情看: //https://blog.csdn.net/K346K346/article/details/80436430 var maxCount uint = 1 << n var i uint var j uint for i = 0; i < maxCount; i++ { for j = 0; j < n; j++ { if (i & (1 << j)) != 0 { //在做位运算的时候需要注意数据类型为uint fmt.Printf("%s",letter[j]) } } fmt.Println() } } func main() { CaptitalLetter(5) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |