2022年_蓝桥杯_省赛_4月23日真题_第十三届_python_第六题_小蓝对角线找奖品
蓝桥杯真题又来了啊,上题目:
题目:
(注.input()输入函数的括号中不允许添加任何信息)
编程实现:
有一个N*M的矩阵方格,其中有些方格中有奖品,有些方格中没有奖品。小蓝需要从N*M的矩阵中选择一个正方形区域,如果所选的正方形区域的一条对角线方格中都有奖品,其他方格都没有奖品,就会获得所选区域中的所有奖品,否则不能获得奖品。
当给出N和M的值,及N*M的矩阵方格中摆放的奖品情况(0表示方格中没有奖品,1表示方格中有奖品),请你帮助小蓝找出一个正方形区域,能够获得数量最多的奖品,并将奖品数输出
例如:当N=5 M=6 结果如下
(盗图图)自己画的实在不好看,抱歉了哈。原版大大:@怪盗基德的头号女粉
只要选择红线画上的正方形区域,就可以获得最多的4个奖品。
输入描述:第一行输入两个整数N 和 M,N表示矩形的行数,M表示矩阵的列数,两个整数之间一个空格隔开,接下来输入N行,每行包括M个0或者1,0或1之间一个空格隔开
输出描述:输出一个整数,表示最多可以获得的奖品数。
输入:
5 6
1 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
0 1 0 0 0 1
1 0 1 0 0 0
输出:4
解析:这题直接暴力解,一共可以分为几个大块,第一、输入,第二、对角线遍历(可以考虑用函数) 第三、判断矩形是否只有一条对角线 第四、输出
代码:非常好理解,但有点长 正在改进中...
n=input() # 输入行和列
N=int(n[0]) # 行就是第一个
M=int(n[2]) # 去掉空格来算,列是第三个
s=[] # 创建一个列表,里面要装所有的格子
d=0 # 输出结果(最长奖品对角线)
for i in range(N): # 搞N行的输入框c=input()[::2] # 去掉空格c=[int(i) for i in c] # 转成数字s.append(c) # 装进大列表里
def find_left(i,j,s): # 进行左对角线寻找 i是行数索引号,j是列数索引号global N # 把N搞成全局变量,要用一下它h=1 # 对角线奖品数x=i # 给i和j搞个备份y=ja=0 # 用来判断矩形是否只有一条对角线的东东if s[i][j] == 1: # 看看第一个是不是有奖品while (j>0 and i<N-1)and s[i][j]==1 :'''循环,达到对角线遍历的效果。N要变成索引号得-1j要注意不要等于零(后面j-1时会超出遍历范围)。i同理。'''i+=1 # 往下一列j-=1 # 往左一格h+=1 # 对角线奖品数+1for t in range(h): # 画(不是真的画!)出一个矩形a=0 # 每次得把a清零一下for r in range (h):if y<N-1: # 小心,别又超出范围了(这种东西真的超烦)a+=s[x][y-r] # 每次往左'''把在画出的矩形的每一行都统计一下,如果这个矩形里只有一条对角线,那么每行都只会有一个1'''x+=1 # 换行if a != 1: # 判断一下return 0 # 如果有其他的1那么就踢掉return h # 最终返回对角线奖品数量else: # 如果第一个就没有奖品 就没有遍历的价值了return 0; # 直接返回0
def find_right(i,j,s): # 进行右对角线寻找 和左对角线寻找方法一模一样global N,M # 这回M也要用用h=1x=iy=ja=0if s[i][j] == 1:while (i<N-1 and j < M-1) and s[i][j]==1 : # M-1的道理和N-1的一样i+=1j+=1 # 往右一格h+=1for t in range(h):a=0for r in range (h):if y< M-1 :a+=s[x][y+r] # 每次往右x+=1if a != 1:return 0return helse:return 0;
for i in range(N): # i是行索引号for j in range(M): # j是列索引号e=find_left(i,j,s) # 左边找找f=find_right(i,j,s) # 右边也找找d=e if e>d and e>f else f if f>d else d # 这里运用了一个三目运算符
# 返回e 得满足e>d和e>f。要不就是f 得满足f>d(因为e已经小于f了 就不比了)。都不是返回d
print(d)
这里面有两个小难点,第一是 i 和 j 的取值 ,我们在日常做题中也会遇到这种,这里给出的建议就是把自己当成电脑,一行一行自己搞一遍。第二是python里的三元运算符,有点难理解,按照注释一点一点推,会懂的。
好啦,就到这里,有什么疑问尽管评论区找我,下期分享更多蓝桥杯真题。
特别之感谢 @怪盗基德的头号女粉 和一位纠正我问题的小伙伴(深深鞠躬)。
2022年_蓝桥杯_省赛_4月23日真题_第十三届_python_第六题_小蓝对角线找奖品相关推荐
- 第九届蓝桥杯(省赛)C++C组真题题解
文章目录 题目链接 C组真题(剩余题目同B组真题相同,已给出B组真题题目链接) 题目结构 第一题 哪天返回 第二题 猴子分香蕉 第五题 书号验证 第六题 稍小分数 第七题 次数差 第八题 等腰三角形 ...
- [蓝桥杯解题报告]第十届蓝桥杯大赛省赛(软件类)真题C++A组 Apare_xzc
蓝桥杯第十届省赛软件类C++A组解题报告 Apare_xzc 2020/2/13 考生须知 A. 平方和(5分) 分析: 这个题就是简单的模拟.只要循环一遍,判断每个数是否含有2019,然后平方相加即 ...
- oracle定时器每天下午6点_强力巨彩冠名!6月23日下午15点直播抢先看
高工新型显示产业圈群招募中,欢迎感兴趣的产业界朋友们加微信号:13066835295入群:添加微信时请备注单位-职务-姓名,通过审核后我们将邀请入群. 在首期直播实现超4000位LED产业链人士在线观 ...
- 【蓝桥杯第八届省赛_电子钟】
蓝桥杯第八届省赛_电子钟 修改版本 基础知识学习来自小蜜蜂老师 yyds 下面代码功能没有完全实现 有误还望大佬指正 总结分析: 第八届题目难度从我个人来说明显会比第七届难了很多,当然也可能是我自己这 ...
- 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...
介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...
- c++判断奇偶_第十一届(今年)蓝桥杯省模拟赛 试题+源码 C/C++详解
后台回复开发工具,免费获取C语言常用编译器 本文章来源:CSDN|亓官劼 本文是第十一届蓝桥杯省模拟赛的试题和部分题解,博主参加的是4.13日的下午场,也就是本次模拟赛的第一天了吧,不知道有没有上午场 ...
- 【PTA】2022年蓝桥杯及天梯赛赛前训练(C++练习)
[PTA]2022年蓝桥杯及天梯赛赛前训练(C++练习) 前言 L1-1 嫑废话上代码 L1-2 猫是液体 L1-3 洛希极限 L1-4 调和平均 L1-5 胎压监测 L1-6 吃火锅 L1-7 前世 ...
- 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)
目录 第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾) 试题 A: 九进制转十进制 试题 B: 顺子日期 试题 C: 刷题统计 试题 D: 修剪灌木 试题 E: X 进制减法 试题 F: ...
- 第十四届蓝桥杯校内模拟赛第一期——Python
第十四届蓝桥杯校内模拟赛第一期--Python 文章目录 第十四届蓝桥杯校内模拟赛第一期--Python 1.二进制位数 问题描述 参考答案 扩展 2. 晨跑 问题描述 参考答案 扩展 3. 调和级数 ...
最新文章
- 图灵十二月书讯 ——年底大餐
- @jsonProperty 实现返回自定义属性名字
- python适合做后端开发吗-用Python做后台开发,看这一篇就够了
- c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)
- com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User
- 音视频技术开发周刊 72期
- mysql怎么查看索引情况_mysql 查看索引使用情况
- jsp mysql做登入界面_用jsp实现网站登录界面的制作,并连接数据库
- Spring Boot基础学习笔记16:项目打包部署
- 基于ffmpeg入门学习相关的资料
- 如何才能降低真机测试成本和建议所使用平台
- 怎么从php文件中查找代码,php类在文件中查找类文件,但不查找类
- 内容分发网络:请简述 CDN 回源如何工作?
- mysql五日均线_终于有人把“5日均线做短线”的精髓讲透了!
- 为什么选择IT行业,原因是什么
- C++将一个cpp文件中的变量应用到另一个cpp文件中
- 利用闲置的树莓派4B搭建一个NAS(二)
- opencv3之SVD
- IDEA如何设置热启动
- 关于线程的interrupt与sleep问题