Python 蓝桥杯 七段码

2023-05-16

一、题目描述

 二、题目分析

我使用的是暴力解决,因为一共就7位,但是容易出现漏算或多算,经过很久的找错误和改正才得到答案80.一个较易弄错的问题就是出现3中组合:abde、afcd、bcef,如果使用暴力判断各个字符周围是否有字符,会得到答案83,就是因为没有考虑的以上3中情况,4个二极管两两连续,但是整体不连续,是不符合题意的,需要排除。

这里使用的方法不推荐,因为是在已知答案为80的情况下,如果不知道,很容易得到错误答案83.

还有一位up主,也用到了排列组合,原文链接如下:https://blog.csdn.net/file543102118/article/details/115278220

主要步骤是:将图存入字典中,对字典的key使用字符串的join方法聚合在一起。对字符串的前i个字符进行无序组合,接着对各个无序组合进行判断,和暴力求解一样,如果通过遍历进行判断,组合中至少要有2个元素,当只有一个元素时,一定是满足题意的。当有2个以上元素时,还需要进行有序排列,这样可以避免我自己思考问题中出现的3中情况。这里用到了for ...else循环

在 Python 中,for ...else语句 表示这样的意思:for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while ...else语句也是一样。

换句话说,当for所有的循环代码块正常运行完,才会运行else语句。

三、源代码

import itertools
num = 0

def check(a):
    def define(a):
        for i in range(7):
            if a[i] != 0:
                a[i] = 1
        if a.count(1)==1:
            return True
            
        if a[0]==1:# a亮
            if a[1]==0 and a[5]==0:
                return False
        if a[1]==1:# b亮
            if a[0]==0 and a[2]==0 and a[6]==0:
                return False
        if a[2]==1:
            if a[1]==0 and a[3]==0 and a[6]==0:
                return False
        if a[3]==1:
            if a[2]==0 and a[4]==0:
                return False
        if a[4]==1:
            if a[3]==0 and a[5]==0 and a[6]==0:
                return False
        if a[5]==1:
            if a[0]==0 and a[6]==0 and a[4]==0:
                return False
        if a[6]==1:
            if a[1]==0 and a[2]==0 and a[4]==0 and a[5]==0:
                return False
        if a==[1,1,0,1,1,0,0] or a==[1,0,1,1,0,1,0] or a==[0,1,1,0,1,1,0]:
            return False
        return True
    if not define(a):
        return 0
    else:
        return 1
        
        
for a in range(1,8):
    for item in itertools.combinations('abcdefg',a):
##        print(item)
        ans = [0 for i in range(7)]
        for i in item:
##            print("item",item)
##            print(ord(i)-97)
            ans[ord(i)-97] = 1
##        print("ans:",ans)
        num += check(ans)
##        print("num:",num)
print(num)

较好的方法的代码:

import itertools
new_list = []
# 计数
num = 0
# 采用字典将该标号相接的所有标号列举出来
dict = {'a':['f', 'b'], 'b':['a', 'c', 'g'], 'c':['b', 'd', 'g'],
        'd':['e', 'c'], 'e':['d', 'f', 'g'], 'f':['a', 'e', 'g'],
        'g':['b', 'c', 'e', 'f']}

string = "".join(list(dict.keys()))
for i in range(1, 8):
    # 对string字符串中的前i个字符进行无序组合
    for j in (itertools.combinations(list(string), i)):
        new_list.append("".join(j))
##print("new_list:",new_list)
for str1 in new_list:
    if len(str1) == 1:
        num += 1
        continue

    for situation in itertools.permutations(str1):
##        print("str1:",str1)
##        print("situation",situation)
        for c in range(1, len(situation)):
            if situation[c - 1] not in dict[situation[c]]:
                break

        else:
            num += 1
            break
print(num)
# num = 80

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 蓝桥杯 七段码 的相关文章

随机推荐

  • 微信PC端聊天界面表情包无法显示

    我试成功的一个办法 xff0c 分享一下 具体步骤 xff1a 1 找到微信聊天界面的设置选项 xff0c 如图 2 进入微信文件保存位置 3 进入WeChat Files All Users config目录 4 删除config dat
  • MathType 提示需要一个新版本的MT Extra(True Type)字体

    1 打开C Windows Fonts文件夹 xff0c 若里面有MT Extra TrueType 字体或其快捷方式 xff0c 则将其删除 2 找到MathType安装目录下C Program Files x86 MathType Fo
  • Word快捷键设置上下标;Word取消表格虚线;Word查找数学符号

    问题1 快捷键设置上下角标 这个在论文写作时比较常用 xff0c 本人也是最近在写大论文 xff0c 遇到了这个情况 Word和Visio中 xff0c 都可以使用 步骤 xff1a 选中即将成为上下标的内容 xff0c 上标快捷键 xff
  • xcode中xib使用之轻松学习

    1 创建xib文件 在工程目录中New Files xff0c 选择user interface类型中的empty创建一个空的interface builder document文件 文件名没有强制的要求 xff0c 最好使用 前缀 xff
  • 用Opencv打造一台自动视觉目标跟踪系统

    平移 倾斜伺服装置 xff0c 帮助摄像机使用视觉自动跟踪颜色对象 简介 现在我们将使用我们的设备帮助相机自动跟踪颜色对象 xff0c 如下所示 xff1a OpenCV可免费用于学术和商业用途 它具有C 43 43 xff0c C xff
  • error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"【转载+修改】

    error Microsoft Visual C 43 43 14 0 is required Get it with Microsoft Visual C 43 43 Build Tools http landinghub visuals
  • 如何使用OpenCV实现多张图像拼接

    先来看看OpenCV官方的例子得到效果是非常的好 xff0c 输入的images如下 xff1a 效果 xff1a Stitcher类与detail命名空间 OpenCV提供了高级别的函数封装在Stitcher类中 xff0c 使用很方便
  • 如何使用OpenCV对物体进行搜索检测与识别

    在本教程中 xff0c 我们将了解对象检测中称为 选择性搜索 的重要概念 我们还将用C 43 43 和Python共享OpenCV代码 物体检测与物体识别 对象识别算法识别图像中存在哪些对象 它将整个图像作为输入 xff0c 并输出该图像中
  • 一种基于深度学习的方法来检测摩托车头盔的使用

    背景 据统计使用摩托车头盔可以将道路交通事故中摩托车驾驶员致命伤害的可能性降低42 xff05 xff0c 尽管如此 xff0c 遵守摩托车头盔还是较少 xff0c 尤其是在发展中国家 xff0c 为了有效开展针对性的头盔使用运动 xff0
  • 偏振光相机1——偏振光

    光的电磁波属性 光是一种电磁波 xff0c 这个概念大家应该不陌生 既然是电磁波 xff0c 那我们从电磁波的特性上来看它有哪些属性 用图1中的交变电磁场来描述光的特性 xff0c 电场和磁场在空间中相互垂直 xff0c 它们同时与光的传播
  • 偏振光相机2——索尼大法

    Stokes参量 在上一篇 偏振光相机 偏振光 中 xff0c 我们知道偏振光有线性偏振光 椭圆偏振光 圆偏光 那么如何定量的描述偏振光呢 xff1f Stokes矢量是一种广泛用来描述偏振光属性的方法 图1 不同类型的偏振光 线性偏振光和
  • 偏振光相机3——偏振应用

    在之前的2篇中 xff0c 介绍了偏振光的基本概念和基于SONY最新CMOS偏振传感器芯片的相机 在本篇中 xff0c 我们来看看偏振相机的一些应用 偏振相机的应用离不开偏振光 xff0c 那么先看看如何得到偏振光信息 如何获取偏光 在 偏
  • 【干货】生成对抗网络GANs算法在医学图像领域应用总结

    Goodfellow等人 介绍了生成对抗网络 xff08 GAN xff09 以模拟数据分布 由于与两个基本属性相关的原因 xff0c GAN可以合成真实图像 GAN是一种无监督的训练方法 xff0c 可以通过类似于人类学习图像特征的方式获
  • 图像算法之3D人脸识别技术原理概述

    随着深度学习技术的进步 xff0c 面部相关任务的研究也成为学术界和工业界的热门话题 众所周知的面部任务通常包括面部检测 xff0c 面部识别 xff0c 面部表情识别等 xff0c 其主要使用2D RGB面部 xff08 通常包括一些纹理
  • 如何使用OpenCV计算机视觉检测帕金森病图片

    在本教程中 xff0c 您将学习如何使用OpenCV和机器学习在手绘的螺旋和波浪图像中自动检测帕金森病 本教程来自来自巴西的博士生Joao Joao有兴趣利用计算机视觉和机器学习基于几何图形 xff08 即螺旋和符号波 xff09 自动检测
  • OpenCV快速寻找图像差异

    如何使用结构相似性指数 xff08 SSIM xff09 将两个图像与Python进行比较 使用这种方法 xff0c 我们能够轻松确定两个图像是否相同或由于轻微的图像处理 xff0c 压缩伪像或有目的的篡改而产生差异 今天我们将扩展SSIM
  • C++17使用std::optional表示一个可能存在的值

    文章目录 前言返回一个bool值使用 std optional 改写总结 前言 平时写代码会遇到一种传递参数特殊值标记特殊流程 xff0c 或者函数返回值存在魔法数的情况 xff0c 很需要一种标记参数或返回值状态的结构 xff0c 那么在
  • Redhat进程管理

    进程管理 概论 xff1a 程序 xff1a 静态的代码 xff0c 占用磁盘空间 进程 xff1a 动态的代码 xff0c 占用内存 cpu xff08 提供服务的主体 xff09 进程的唯一标识 xff1a PID 编号 父进程 子进程
  • ETCD 高可用集群 Centos7

    ETCD 高可用集群 在本地三台虚拟机以static方式搭建ETCD集群测试环境 xff0c 均为Centos7 一 准备工作 1 主机名及IP 主机名IPvm5192 168 56 10vm6192 168 56 11vm7192 168
  • Python 蓝桥杯 七段码

    一 题目描述 二 题目分析 我使用的是暴力解决 xff0c 因为一共就7位 xff0c 但是容易出现漏算或多算 xff0c 经过很久的找错误和改正才得到答案80 一个较易弄错的问题就是出现3中组合 xff1a abde afcd bcef