七段码

七段码2020年第十一届蓝桥杯省赛,填空题,lanqiao0J题号595

【问题描述】

七段数码管,一共有7个发光二极管,问能表示多少种不同的字符,要求发光的二极管是相连的。

七段数码管,一共有7个管,所以总共有种情况。

【解题思路】

【手算】

因为图形简单,出现的情况并不多,直接手算也行,约5~10分钟。用字符表示数码管不太方便,改用数字: a ~ g分别用1~7表示。统计亮1,2,3,4,5,6,7个灯分别有多少种情况。

【编码】  

这道题需要用到“联通矩阵”+“DFS(深度优先搜索)” 。

首先介绍一下联通矩阵 ,以上图为例,a只与b,f连通,所以a行的b,f列为1,其余列为0。b与a,c,g连通,所以b行的a,c,g列为1,其余列为0。以此类推,可以得到如下的矩阵。

连通矩阵

然后深度优先搜索 (DFS)大家可以参考一下这篇文章:DFS初入门(深度优先搜索)(Python)

  • 七个灯总共有种方案。 所以循环127次,对每次循环进行判断即可。
  • 第i个方案用choose来选择点亮的灯:将 i 转换成二进制的choose,1代表亮,0代表不亮。
  • 因为是灯是连通的所以从任意一点都可以走到其他点 ,所以找该方案第一个亮的灯,让它去做一个深度优先搜索就可以了。
  • 深度优先搜索:从第一个亮的灯沿着选择的和可到达的(连通且未到达)点走一圈。
  • 对深度优先搜索结果进行判断,排除方案选择了但走一圈却到不了的情况,留下方案选择了且走到了的情况。统计这种情况数得到答案。

【题解】

【手算】 

这些组合中的连续亮灯,分7种情况统计:

  • 亮一个灯:1、2、3、4、5、6、7,共7种
  • 亮两个灯:12、13、24、25、34、36、45、46、57、67,共10种
  • 亮三个灯:123、124、125、134、136、234、245、246、257、345、346、367、456、457、467、567,共16种
  • 亮四个灯,这时不要直接数四个灯,情况与灭三个灯是等价的,数三个灯比数四个灯简单。注意灭三个灯后其他的四个亮灯是连续的:123、124、125、126、127、134、135、136、137、157、167、245、257、267、346、357、367、457、467、567,共20种
  • 亮五个灯:数灭两个灯的情况:12、灭13、灭14、...等,共19种
  • 亮六个灯:数灭一个灯的情况,有7种
  • 亮七个灯:有1种。
  • 对以上所有情况求和,答案是80。、

【编码】

Edge = [              # 七段码的连通矩阵[0, 1, 0, 0, 0, 1, 0],[1, 0, 1, 0, 0, 0, 1],[0, 1, 0, 1, 0, 0, 1],[0, 0, 1, 0, 1, 0, 0],[0, 0, 0, 1, 0, 1, 1],[1, 0, 0, 0, 1, 0, 1],[0, 1, 1, 0, 1, 1, 0]]def dfs(k):for i in range(7):if Edge[k][i] and choose[i] and not visited[i]:  # 连通+亮+没访问过visited[i] = 1                               # 访问了,标记为已访问dfs(i)                                       # 在走过的点继续走下一个ans = 0
for i in range(1, 128):  # 2^7-1=127种方案choose = [0 for _ in range(7)]  # 选择那些灯灯亮或者不亮visited = [0 for _ in range(7)]# 十进制(第i个方案)--》二进制choosex = ij = 0while x:if x % 2:choose[j] = 1x //= 2j += 1k = 0# 找该方案第一个亮的灯(因为是连通的所以从任意一点都可以走到其他点)while not choose[k]:               k += 1visited[k] = 1                      # 访问了,标记为已访问dfs(k)flag = Truefor j in range(7):if choose[j] and not visited[j]:# 方案选择了,但走一圈却到不了flag = False                # 这个情况不满足breakif flag:                            # 方案选择了却走到了ans += 1
print(ans)    # 80

蓝桥杯刷题007——七段码相关推荐

  1. ACMoi蓝桥杯刷题网站推荐

    ACM oi 蓝桥杯 刷题网站推荐 ACM刷题oj oi刷题 蓝桥杯刷题oj 刷题网站推荐 刷题的oj越来越多 肯定都有他们自己的特点 今天给各位朋友推荐一下一些网站 新手(中文题) 1.洛谷容易的题 ...

  2. 【蓝桥杯刷题冲刺辅导】掌握递归·DFS解题套路,这一文足以?

    大家好,我是安然无虞. 目录 一.刷题前和铁汁们唠一唠 1.刷题前须知 2.刷题时套路 <1>套路 <2>背下列常用数 ​ <3>投机取巧:根据数据范围确定算法 ​ ...

  3. 蓝桥杯刷题日记 更新到2022/2/5

    蓝桥杯刷题日记 文章目录 蓝桥杯刷题日记 DAY1 1.递归实现指数型枚举 2.递归实现组合型枚举 3.递归实现排列型枚举 Day2 1.八皇后问题 *2.费解的开关 3.带分数 Day3 1.飞行员 ...

  4. 蓝桥杯刷题之分享或许会迟到,但绝不会缺席

    不好意思大家.今晚因为需要学习java 所以博客写的有点晚了,但我中午就把这三道题准备好了!!! 第三天的蓝桥杯刷题 回文串 挖掘机技术哪家强 说反话 回文串 大家看这个题目.或许会想到回文数之前,但 ...

  5. 蓝桥杯python组练题第六天——七段码——蓝桥杯官网题库

    单词分析 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可.不建议写代码. 小蓝要用七段码数码管来表示一种特殊的文字. 上图给出了七段码数码管的一个图示,数码管中一共有 ...

  6. 蓝桥杯真题:七段码(2020 年省赛)

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 小蓝要用七段码数码管来表示一种特殊的文字. 上图给出了七段码数码管的一个图示,数码管中一共有 77 段可以发光的二 ...

  7. 小白要努力之为了蓝桥杯刷题!!!超简单哦!!!

    分享一个歌词直接让我笑喷的歌词----之前我不听歌的,毕竟第一次听到.学习的目的就是找工作,或者创业,但就是一个字"挣钱" 下面直接开始正题吧 首先科普一些知识,全局变量定义的时候 ...

  8. 蓝桥杯刷题以及算法解析的网址

    蓝桥杯题目算法解析参考博客:https://blog.csdn.net/qq_38648587 做题目的网站,有实时模拟比赛:https://oj.ahstu.cc/JudgeOnline/probl ...

  9. 蓝桥杯刷题,第四界省赛B组

    题头,本内容的题目和部分内容均来自博客:https://blog.csdn.net/ryo_218/article/details/79704030 ,在此感谢. 1. 题目标题:高斯日记 大数学家高 ...

最新文章

  1. MainWindow 简介
  2. opencv python考勤_Python基于Opencv来快速实现人脸识别过程详解(完整版)
  3. java midi 解析_Java从MIDI键盘获取输入
  4. 24 SD配置-主数据-维护客户主记录中的保留字段
  5. 物体非等比缩放后的法线处理
  6. window tomcat 端口冲突问题解决
  7. Mac OS X上使用Wireshark(可用)
  8. js实现简单的全选和反选
  9. 猿创征文|C++软件开发值得推荐的十大高效软件分析工具
  10. 宝塔linux 解压文件,宝塔面板能否解压缩文件
  11. 计算机能不能升级固态硬盘,笔记本升级固态硬盘后会怎样?秒懂
  12. 传统建材采购的痛点有哪些?
  13. Thanos Query Frontend
  14. springboot实现支付宝扫码支付
  15. 政务云市场开启“狂飙”:一项前三,两项跃升!
  16. 小明身高180cm,小刚身高165cm,计算两人的身高差
  17. (P9)socket编程四:流协议与粘(nian)包,粘包产生的原因,粘包处理方案,readn,writen 6.回射客户/服务器
  18. 初学AI(ML、DL、TensorFlow)与python、OpenCV的一些体会
  19. mysql留存数据表_用mysql统计留存率
  20. ASP.NET 缓存技术(一)——启用页面输出缓存

热门文章

  1. 旧款华为笔记本解锁智慧语音教程
  2. about dream
  3. winrar 去广告_winRAR去广告版软件安装教程
  4. day08学习 Python文件函数、CSV文件读写
  5. mysql innodb_large_prefix
  6. ios 按钮图片拉伸_iOS中实现图片自适应拉伸效果的方法
  7. 今天,我宣布了新 Logo
  8. oracle 建索引 00054,ora-00054 表被lock导致资源忙等待不能操作案例
  9. 最近看的电影综艺推荐
  10. 链表-双向链表(C语言)