zoukankan      html  css  js  c++  java
  • 使用golang求出A-Z的所有子集

    参考链接: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)
    }
    还在找我的道
  • 相关阅读:
    GDB 用法
    C编程规范
    PHP面向对象
    cron定时任务
    Apatche配置基础
    正则表达式笔记
    PHP在windows下命令行方式
    面试题
    struts与ajax的关系
    ORACLE DUAL表详解
  • 原文地址:https://www.cnblogs.com/TimLiuDream/p/9912119.html
Copyright © 2011-2022 走看看