Transformer Jetbains全家桶 matrix plot sed build mockito Echojs vue组件开发 后台管理网页模板 nginx视频教程 网赚教程下载 oracle删除字段 android入门实例 oracle创建唯一索引 excel加减混合求和 python获取数据类型 python新手教程 python的extend java抽象方法 怎么看java版本 java获取数据类型 linuxcat命令 nginx安装教程 嵌入式linux驱动程序设计从入门到精通 易语言多线程 图解深度学习 笔记本测试软件 p6软件 0x00000057 wmiprvse是什么进程 fireworks stata 沉沦之城 快手封号规则 图片格式太大怎么变小 adb工具包 繁简体转换 骰子技巧 征战者加点
当前位置: 首页 > 学习教程  > python

[蓝桥杯] 七段码 python解法

2021/2/7 10:54:34 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

【问题描述】 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二极管,分别标记为 a, b, c, d, e, f, g。 小蓝要选择一部分二极管(至少要有一个)发光来表达字符。 …

【问题描述】
小蓝要用七段码数码管来表示一种特殊的文字。

上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二极管,分别标记为 a, b, c, d, e, f, g。
小蓝要选择一部分二极管(至少要有一个)发光来表达字符。
在设计字符的表达时,要求所有发光的二极管是连成一片的。
例如:b 发光,其他二极管不发光可以用来表达一种字符。
例如:c 发光,其他二极管不发光可以用来表达一种字符。
这种方案与上一行的方案可以用来表示不同的字符,尽管看上去比较相似。
例如:a, b, c, d, e 发光,f, g 不发光可以用来表达一种字符。
例如:b, f 发光,其他二极管不发光则不能用来表达一种字符,因为发光的二极管没有连成一片。
请问,小蓝可以用七段码数码管表达多少种不同的字符?

结果:80

import itertools

class UnionFindSet():
    def __init__(self,n):
        self.setSize = n  #不连通区域
        self.father = {i:-1 for i in range(7)}

    def find(self,x):
        root = x
        while self.father[root] != -1:  #找根节点
            root = self.father[root]

        while (x != root): #路径压缩
            o = self.father[x]  #找x的父节点
            self.father[x] = root  #把x的父节点设置成刚才找到的根
            x = o  #往上一层

        return root

    def merge(self, x, y):
        root_x = self.find(x)
        root_y = self.find(y)
        if root_x != root_y:
            self.father[root_x] = root_y  #合并
            self.setSize -= 1
            
dic = {
    0: [1, 5], 1: [0, 2, 6], 2: [1, 3, 6], 3: [2, 4], 4: [3, 5, 6], 5: [0, 4, 6], 6: [1, 2, 4, 5]
}

ans, nums = 7, [x for x in range(7)]
for i in range(2,8):
    for j in (itertools.combinations(nums, i)):
        uf = UnionFindSet(len(j))
        for k in range(len(j)):
            for m in range(k + 1, len(j)):
                if j[m] in dic[j[k]]:
                    uf.merge(j[m], j[k])
        if uf.setSize == 1:
            ans += 1
print(ans)
                


本文链接: http://www.dtmao.cc/news_show_2000233.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?