蓝桥杯3月刷题集训-A 【枚举模拟】Day3

蓝桥杯3月刷题集训-A 【枚举&模拟】Day3

文章目录

  • 蓝桥杯3月刷题集训-A 【枚举&模拟】Day3
    • 一、扫雷
    • 二、含2天数

一、扫雷

在这里插入图片描述

我们首先读取输入中的方格图,将其保存在一个二维数组 grid 中。然后,遍历方格图中的每一个方格,对于每个空白方格,遍历其周围八个方格,统计其中地雷的数量,输出结果;对于每个有地雷的方格,直接输出 9。在输出时,每一行输出结束后需要换行,以便下一行的输出。

# 读取输入,n 行 m 列的方格图
n, m = map(int, input().split())
grid = []
for i in range(n):
    row = list(map(int, input().split()))
    grid.append(row)

# 遍历方格图中的每一个方格
for i in range(n):
    for j in range(m):
        # 如果这个方格没有地雷,计算周围八个方格中的地雷数量并输出
        if grid[i][j] == 0:
            count = 0
            # 遍历周围八个方格
            for x in range(max(0, i-1), min(n, i+2)):
                for y in range(max(0, j-1), min(m, j+2)):
                    if grid[x][y] == 1:  # 如果这个方格有地雷,则计数器加 1
                        count += 1
            print(count, end=' ')  # 输出周围地雷数量
        # 如果这个方格有地雷,直接输出 9
        else:
            print(9, end=' ')
    print()  # 每行结束后换行输出下一行

下面是我的朋友提供的另一种解题思路:首先定义一个二维列表来表示扫雷的方格图,将每个有地雷的位置标记为9,对于每个没有地雷的位置,遍历其周围的八个位置,计算出周围地雷的数量,将该位置标记为该数量,最后输出整个方格图。

具体实现步骤如下:

  1. 读入 n, m 表示方格图的行数和列数。
  2. 定义一个列表 dir,其中包含八个方向的坐标偏移量,用于表示每个位置周围的八个位置。
  3. 定义一个空列表 s 用于存储方格图。
  4. 定义一个二维列表 vis,用于表示某个位置是否被访问过。
  5. 读入方格图,将其存入列表 s 中,并初始化 vis 为全 False。
  6. 遍历整个方格图,对于每个位置,如果它是有地雷的位置,则将其标记为9,否则遍历其周围的八个位置,计算出周围地雷的数量,将该位置标记为该数量。
  7. 在遍历过程中,将该位置的 vis 标记为 True,表示已访问。
  8. 输出整个方格图。
n, m = map(int, input().split())
# 定义方向数组,包含 8 个方向,分别为上、左上、左、左下、下、右下、右、右上。数组中每个元素包含两个值,分别表示在行和列方向上的偏移量。
dir = [[-1,0],[-1,-1],[0,-1],[1,-1],[1,0],[1,1],[0,1],[-1,1]]
# 定义一个空列表 s,用来存放方格图中每个格子的数字。
s = []
# 定义一个二维数组 vis,用来记录某个格子是否已经被访问过。
vis = [[False]*m for _ in range(n)]
# 定义一个函数 in_bound(x, y),用来判断坐标 (x, y) 是否越界。
def in_bound(x, y):
    return x>=0 and y>=0 and x<n and y<m

# 输入方格图,将每一行作为一个列表,添加到 s 列表中。
for i in range(n):
    row = list(map(int, input().split()))
    s.append(row)

for i in range(n):
    for j in range(m):
        tmp = 0
        # 遍历每一个格子,如果该格子是地雷,则将其标记为 9
        if s[i][j] == 1:
            s[i][j] = 9
        # 如果该格子没有地雷,则统计其周围 8 个格子中地雷的个数,将该个数赋值给该格子。
        elif s[i][j] == 0:
            for k in range(8):
                tx = i + dir[k][0]      # 计算出该格子的下一个格子的坐标
                ty = j + dir[k][1]      # 计算出该格子的下一个格子的坐标
                if in_bound(tx, ty) and ((s[tx][ty] == 1 and not vis[tx][ty]) or s[tx][ty] == 9):   # 如果该格子的下一个格子是地雷,且没有被访问过,则将该格子的数字加 1
                    tmp += 1    # 如果该格子的下一个格子是地雷,且已经被访问过,则不做任何操作
            s[i][j] = tmp   # 将该格子的数字赋值给该格子
        vis[i][j] = True    # 将该格子标记为已经被访问过
        if j == m-1:    # 输出每个格子的数字
            print(s[i][j]) 
        else:   
            print(s[i][j], end=' ')     # 如果该格子是一行的最后一个,则输出一个换行符

二、含2天数

在这里插入图片描述

count = 0   # 用来记录含有 2 的天数
for year in range(1900, 10000): # 从 1900 年开始,到 10000 年结束
    for month in range(1, 13):  # 从 1 月开始,到 12 月结束
        if month in [1, 3, 5, 7, 8, 10, 12]:    # 1, 3, 5, 7, 8, 10, 12 月份有 31 天
            days = 31
        elif month == 2:    # 2 月份有 28 天,闰年有 29 天
            if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:    # 判断是否是闰年
                days = 29
            else:
                days = 28
        else:
            days = 30
        for day in range(1, days+1):    # 从 1 号开始,到 days 号结束
            if '2' in str(year) or '2' in str(month).zfill(2) or '2' in str(day).zfill(2):  # 判断年、月、日中是否含有 2
                count += 1  # 如果含有 2,count 加 1
print(count)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5006.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式-观察者模式

1 概述 定义&#xff1a; 又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;使他们…

pandas基本应用记录

查询行数和列数 data.describe() 查询前3行数据 data.head(3) 打印第几行第几列 data.loc[index, cloumn_name ] 分组统计 不带行索引 data.groupby( column_1 )[ column_2 ].apply(sum) 去除含有NAN数据行/列 df df.dropna() # default: axis0, howany 意思是只要…

Python3,一次掌握这些数据可视化图表技能,老板不给涨薪都不好意思。

一次性掌握数据可视化图表1、引言2、代码示例2.1 等高线密度图2.1.1 安装2.1.2 示例2.2 旭日图2.3 分簇散点图2.4 点图2.5 小提琴图2.6 词云3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 老板让我把数据整理成视图。 小鱼&#xff1a;那你就整啊。 小屌丝&#xff1a;我…

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP

【人工智能】—约束传播、弧约束、问题结果与问题分解、局部搜索CSP约束传播弧约束弧相容算法AC-3问题结构化简约束图-树结构CSP问题的局部搜索CSP的迭代算法举例&#xff1a;4-Queens加速&#xff1a;模拟退火法加速&#xff1a;最小最大优化(约束加权法)小结约束传播 前向检…

【Docker学习笔记】8.Docker Compose

Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务。然后&#xff0c;使用一个命令&#xff0c;就可以从 YML 文件配置中创建并启动所有服务。 如果你还不了解 …

2023蓝牙耳机性价比推荐:高品质蓝牙耳机盘点分享

无论我们是看视频还是在路上听音乐&#xff0c;真无线蓝牙耳机可以丰富我们的一天。然而&#xff0c;问题是有太多的选择&#xff0c;许多人不知道哪一款的性价比高音质好&#xff0c;下面小编特意整理了一期性价比高音质好的蓝牙耳机。 1.南卡小音舱lite2蓝牙耳机 南卡小音舱…

composer 使用细则

一、composer install 和 composer update 的区别 1.composer.json 文件 指定了项目依赖组件的版本规则及镜像地址 如果没有配置镜像地址&#xff0c;则默认使用全局安装的composer镜像地址 2.composer.lock 文件 保存着当前项目所依赖的php组件的镜像地址及具体的版本号&…

2022(一等奖)D277:1998-2019年中国植被动态变化及其影响因素分析

作品介绍 1 应用背景 近半个世纪以来&#xff0c;随着全球气候变化和人类活动的双重干扰&#xff0c;自然生态系统遭到了不同程度的影响。植被作为陆地生态系统的重要组成部分&#xff0c;在陆地生态系统的物质循环和能量流动中发挥着不可替代的作用&#xff0c;是自然生态系统…

Vue自创插件发布到npm以及使用方法

Vue自创插件发布到npm以及使用方法 目标&#xff1a;创建my-popup-selector下拉框组件&#xff0c;并发布到npm&#xff0c;效果如下图&#xff1a; 禁用时样式&#xff1a; ①创建vue项目&#xff1a; my-popup-selector ②项目目录结构截图如下&#xff1a; ③在项目根目录…

JVM垃圾回收算法

垃圾标记阶段 对象存活判断&#xff1a;在堆里存放着几乎所有的Java对象实例&#xff0c;在GC执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是已经死亡的对象。只有被标记为己经死亡的对象&#xff0c;GC才会在执行垃圾回收时&#xff0c;…

Python+人工智能基础班(通俗易懂版教学)

文章目录一、环境及工具包的介绍二、Python基本语法三、matplotlib、numpy、pandas实操四、机器学习介绍五、机器学习线性回归线性回归实战准备单因子线性回归实战多因子线性回归实战六、机器学习逻辑回归使用线性回归解决分类任务使用逻辑回归解决分类任务逻辑回归实战&#x…

在小公司工作3年,从事软件测试5年了,才发现自己还是处于“初级“水平,是不是该放弃....

毕业前三年&#xff0c;从早到晚&#xff0c;加班到深夜&#xff0c;一年又一年&#xff0c;直至刚入职场的首个黄金三年过年都去了&#xff0c;而职位却仍在原地踏步。尽管感觉自己努力过&#xff0c;但是实际上&#xff0c;自身的能力从没得到过多少提升。 所以在无数个夜晚…

生成对抗网络 | Python实现StackGAN生成对抗神经网络

生成对抗网络 | Python实现StackGAN生成对抗神经网络 目录 生成对抗网络 | Python实现StackGAN生成对抗神经网络效果一览文章概述环境准备程序设计参考资料效果一览 文章概述 生成对抗网络 | Python实现StackGAN生成对抗神经网络 环境准备 python 2.7 TensorFlow 0.12 prettyte…

Java 多线程

多线程实现方式Thread类MyThread类继承了Thread类MyThread thread new MyThread1("窗口1");thread.start();Runnable接口自定义一个MyRunnable类来实现Runnable接口&#xff0c;在MyRunnable类中重写run&#xff08;&#xff09;方法&#xff0c;创建Thread对象&…

I.MX6ULL_Linux_驱动篇(32) 设备树GPIO驱动

在前面章节中&#xff0c;我们直接在驱动文件 newchrled.c 中定义有关寄存器物理地址&#xff0c;然后使用 io_remap 函数进行内存映射&#xff0c;得到对应的虚拟地址&#xff0c;最后操作寄存 器对应的虚拟地址完成对 GPIO 的初始化。本章我们使用设备树来向 Linux 内核传递相…

劝退还是坚守?计算机视觉行业综述

劝退还是坚守&#xff1f;计算机视觉行业综述 1 从炙手可热到充满争议 计算机视觉&#xff08;Computer Vision&#xff0c;简写为CV&#xff09;是一门研究如何让计算机从图像或图像序列中获取信息并 理解其信息的学科&#xff0c;其主要目的在于从图像或图像序列中提取对世…

基于51单片机AT89C51的小型音乐喷泉控制系统设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机小喷泉 获取完整无水印论文报告&#xff08;内含电路原理图和程序&#xff09; 根据目前音乐喷泉的发展现状&#xff0c;介绍了一个以AT89C51单片机为核心的小型音乐喷泉控制系统。给出了一个简洁的单片机控制电路&a…

Java_Spring:9. 基于 XML 的 AOP 配置

目录 1 环境搭建 1.1 第一步&#xff1a;准备必要的代码 1.2 第二步&#xff1a;拷贝必备的 jar 包到工程的 lib 目录 1.3 第三步&#xff1a;创建 spring 的配置文件并导入约束 1.4 第四步&#xff1a;配置 spring 的 ioc 1.5 第五步&#xff1a;抽取公共代码制作成通知 …

数据结构与算法笔记--数据结构与算法基本知识

目录 1--数据结构 2--算法 3--算法分析 4--实例1&#xff1a;普通算法与秦九韶算法的运算效率比较 5--实例2&#xff1a;最大子列和问题 5-1--暴力求解法 5-2--分而治之 5-3--动态规划 5-4--完整代码 1--数据结构 定义&#xff1a;所有数据元素以及数据元素之间的关系…

JS手写Promise(详细过程)

PS&#xff1a;JS手写Promise方法的整理在下一篇文章 手写Promise的API(resolve,reject,then,catch,finally,all)_Eric加油学&#xff01;的博客-CSDN博客 1、基础版Promise 首先&#xff0c;通过一个简单的Promise例子回顾其使用 const promise new Promise((resolve, rej…