【每日一题】备战冲击蓝桥杯国赛——Python程序设计 | Day02 | 寻找2020 | 真题代码解析

💖作者简介:大家好,我是车神哥,府学路18号的车神🥇
⚡About—>车神:从寝室实验室快3分钟,最慢3分半(那半分钟其实是等绿
📝个人主页:应无所住而生其心的博客_府学路18号车神_CSDN博客
🥇 官方认证:人工智能领域优质创作者
🎉点赞评论收藏 == 养成习惯一键三连)😋

⚡希望大家多多支持🤗~一起加油 😁


每天刷一道题,话不多说,先刷近两年的题吧,从2020的开始,如果有一起的可以加入我们!!!

一起来刷题,冲击国赛!!!


由于限制不能直接分享二维码。或者扫码网页左边群二维码。

加入方式:可以在下方的微信名片加我,然后拉你入群。(记得备注暗号我要拿国奖


2020年第十一届蓝桥杯赛题总览

2020年的题就是这些,类型分为两种,分别是结果填空和程序设计,我们每天刷一道题,省赛没问题!
在这里插入图片描述

寻找2020(题目)

(本题总分:5分)


—>【问题描述】

小蓝有一个数字矩阵,里面只包含数字。和2。小蓝很喜欢2020,他想找 到这个数字矩阵中有多少个2020。

小蓝只关注三种构成2020的方式:
・同一行里面连续四个字符从左到右构成2020。
・同一列里面连续四个字符从上到下构成2020。
・在一条从左上到右下的斜线上连续四个字符,从左上到右下构成2020。

例如,对于下面的矩阵:

2 2 0 0 0 0
0 0 0 0 0 0
0 0 2 2 0 2
0 0 0 0 0 0
0 0 0 0 2 2
0 0 2 0 2 0

一共有5个2020。其中1个是在同一行里的,1个是在同一列里的,3个 是斜线上的。

小蓝的矩阵比上面的矩阵要大,由于太大了,他只好将这个矩阵放在了一 个文件里面,在试题目录下有一个文件2020.txt,里面给出了小蓝的矩阵。

请帮助小蓝确定在他的矩阵中有多少个2020。


—>【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


解析

通过阅读题干,本题——难度一般:⭐⭐

由于是填空题,我们只需要得出一个结果即可。结果为一个整数。可以用暴力求解(简单易用,没毛病)。

首先,由于比赛时候会提供**.txt文件,所有我们需要对文件进行读取操作(已经放在代码前面,比赛时候记得用)。目前没有文件,我们就利用原题中的示例进行实现。暴力求解,直接对数组矩阵进行遍历求解(比较容易想到的方法)。对行**、对角线依次进行遍历查找一遍即可。


代码

Python代码实现:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/2/25 14:50
# @Author  : 府学路18号车神
# @Email   :yurz_control@163.com
# @File    : Day02.py

import pandas as pd

"""
下面是打开文件的,由于原题中给了.txt的文件,所以需要我们操作打开读取文件,将文件内容读取到列表中
"""
# file = open("1.txt", "r")      # 利用open()打开文件,并赋值给file
# ls = file.read().split('\n')    # 利用 .split换行分割字符串
# m = len(ls)    # 读取矩阵的行数
# n = len(ls[0])  # 读取矩阵的列数

"""
以下为无.txt文件版本,比赛的时候只需要执行上面的文件读取操作即可
"""

nums =[["2","2","0","0","0","0"],
      ["0","0","0","0","0","0"],
      ["0","0","2","2","0","2"],
      ["0","0","0","0","0","0"],
      ["0","0","0","0","2","2"],
      ["0","0","2","0","2","0"]]    # 题干中的示例

res = 0     # 设置计数器
# 依次遍历,先从行开始遍历一遍
for x in range(len(nums)):    # 行
    temp = "".join(nums[x])     # 将列表的字符变为字符串
    if "2020" in temp:      # 如果“2020”在字符串内则计数+1
            res += 1

# 对列进行操作
for i in range(len(nums) - 3):  # 外层循环
    for j in range(len(nums)):  # 内层循环
        if nums[i][j] == "2" and nums[i + 1][j] == "0" and nums[i + 2][j] == "2" and nums[i + 3][j] == "0":
            res += 1

# 对角线操作
for i in range(len(nums)-3):
    for j in range(len(nums)-3):
        if nums[i][j]=="2" and nums[i+1][j+1]=="0" and nums[i+2][j+2]=="2" and nums[i+3][j+3]=="0":
            res += 1

print("请问有多少个2020?:", res)      # 得到共有5个2020

在这里插入图片描述

由此,我们可以快速的出结果为:5


今天开刷第二天,难度一般,欢迎大家加入,一起变强,一起自律,一起上国赛!!!

有不同解法的可以在下面留言哦!~


❤坚持读Paper,坚持做笔记,坚持学习,坚持刷力扣LeetCode❤!!!
坚持刷题!!!冲击国赛
To Be No.1

⚡⚡


创作不易⚡,过路能❤关注收藏点个赞三连就最好不过了

ღ( ´・ᴗ・` )

  • 17
    点赞
  • 11
    收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:酷酷鲨 设计师:CSDN官方博客 返回首页
评论 24

打赏作者

府学路18号车神

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值