蓝桥杯大赛软件python赛道真题:蛇形填数

真题链接:https://www.lanqiao.cn/problems/594/learning/

题目描述:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从1开始的正整数“蛇形”填充无限大的矩阵。

1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...

容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20行第20列的数是多少?

 前置讲解

1.蛇形生成矩阵:根据“蛇形”提示,容易联想到它的生成规律,如图中所示。我们想到构建这样的生成规律,直到生成出第20行20列的数就行了。你可以思考或尝试一下。你会发现这并不好构建,构建的模式是复杂的、容易出bug的。我们想其他的出路

2.对角线规律:如图我们可以发现,(2,2)比(1,1)大4,(3,3)比(2,2)大8,(4)(4)比(3)(3)大12......我们找到了规律。写成数学通项公式的形式:a_n - a_n-1 = 4(n - 1)。好了,如果写出an的通项公式,那n=20不就是答案吗?但是我不会,这还是一个比较复杂的求解题型,得把高中的我抓过来

3.规律+暴力:其实有更简单的方法,就是在找到的规律的基础上进行暴力枚举,机器不是最擅长这个(很少时间就可以完成)?妙,“巧妙地”就轻松解决了(前面说过好算法地评价标准,这就是个好算法/解法 https://blog.csdn.net/Verhan_Cao/article/details/135708996?spm=1001.2014.3001.5502)。我也没想到还能规律、暴力相结合地解题。

算法逻辑

# 思路:不直接暴力枚举、也不是完全凭规律,而是暴力和规律相结合的方式。创建count,记录当前坐标的值# 功能:循环相加19次得到(20,20)值,存到count
for 循环执行19次,从1开始到19,值在icount加上 次数的四倍 到新count打印count# 对于本次代码写代码逻辑是变复杂了点,可以不必写出来,可以灵活点。但这些逻辑没意义?不,这些逻辑不在纸上,但肯定存在你脑子里。

代码逻辑

# 思路:不直接暴力枚举、也不是完全凭规律,而是暴力和规律相结合的方式。# 创建count,记录当前坐标的值
count = 1# 功能:循环相加19次得到(20,20)值,存到count
# for 循环执行19次,从1开始到19,值在i
for i in range(1, 20):# count加上 次数的四倍 到新countcount += i * 4
# 打印count
print(count)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最简单的基于 FFmpeg 的内存读写的例子:内存转码器

最简单的基于 FFmpeg 的内存读写的例子:内存转码器 最简单的基于 FFmpeg 的内存读写的例子:内存转码器正文源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的内存读写的例子:内存转码器 参考雷霄骅博士的文章,链接&#xf…

【脚本玩漆黑的魅影】全自动丢球

文章目录 原理全部代码 原理 启动后截图。 丢球以后再截图。 如果两图一致,说明没成功,读档重来。 如果两图不一致,说明成功了。 while True:press(A)time.sleep(2)if is_same_img(ImageGrab.grab(), data_img):press(save2)else:break全部…

让Putty支持Tab页(多连接管理)

让Putty支持Tab页(多连接管理) 1 介绍2 PuTTY缺陷3 支持Tab页4 支持用户名和密码保存 1 介绍 PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权…

Redis特性与应用场景

Redis是一个在内存中存储数据的中间件,用于作为数据库,用于作为数据缓存,在分布式系统中能够发挥重要作用。 Redis的特性 1.In-memory data structures: MySQL使用表的方式存储数据,这意味着数据通常存储在硬盘上,并且…

JavaEE进阶(15)Spring原理:Bean的作用域、Bean的生命周期、Spring Boot自动配置(加载Bean、SpringBoot原理分析)

接上次博客:JavaEE进阶(14)Linux基本使用和程序部署(博客系统部署)-CSDN博客 目录 关于Bean的作用域 概念 Bean的作用域 Bean的生命周期 源码阅读 Spring Boot自动配置 Spring 加载Bean 问题描述 原因分析 …

IM6ULL学习总结(四-七-1)输入系统应用编程

第7章 输入系统应用编程 7.1 什么是输入系统 ⚫ 先来了解什么是输入设备? 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些输入设备与 Linux 系统进行数据交换。 ⚫ 什么是输入系统? 输入设备种类繁多,能否统一它们的…

网络触手获取天气数据存入mysql 项目

首先这个案例不一定能直接拿来用,虽然我觉得可以但是里面肯定有一些我没考虑到的地方。 有问题评论或者私信我: 这个案例适合我这种学生小白 获取天气数据网址: https://lishi.tianqi.com/xianyang/202201.html 网络触手获取天气数据代码直…

指针篇章-(冒泡排序详解)

冒泡排序 图解 tmp图解 内容图解 每次循环的次数减少 for循环详解 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列, 一次比较两个元素,如果它们的顺序错误就把它们交换过来。 遍历数列的工作是重复地进行直到没有再需要交换&…

考研复习C语言初阶(4)+标记和BFS展开的扫雷游戏

目录 1. 一维数组的创建和初始化。 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 3. 数组越界 4. 冒泡…

git学习(创建项目提交代码)

操作步骤如下 git init //初始化git remote add origin https://gitee.com/aydvvs.git //建立连接git remote -v //查看git add . //添加到暂存区git push 返送到暂存区git status // 查看提交代码git commit -m初次提交git push -u origin "master"//提交远程分支 …

图像处理与图像分析—图像的读入(C语言)

学习将会依据教材图像处理与图像分析基础(C/C)版内容展开 什么是数字图像处理 一副图像可以定义为一个二维函数 f(x,y) ,其中 x 和 y 是空间(平面)坐标,任意一对空间坐标 (x,y) 处的幅度值 &am…

springcloud第3季 项目工程搭建与需求说明1

一 需求说明 1.1 实现结构图 订单接口调用支付接口 二 工程搭建 2.1 搭建工程步骤