蓝桥杯真题又来了啊,上题目:

题目:

(注.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_第六题_小蓝对角线找奖品相关推荐

  1. 第九届蓝桥杯(省赛)C++C组真题题解

    文章目录 题目链接 C组真题(剩余题目同B组真题相同,已给出B组真题题目链接) 题目结构 第一题 哪天返回 第二题 猴子分香蕉 第五题 书号验证 第六题 稍小分数 第七题 次数差 第八题 等腰三角形 ...

  2. [蓝桥杯解题报告]第十届蓝桥杯大赛省赛(软件类)真题C++A组 Apare_xzc

    蓝桥杯第十届省赛软件类C++A组解题报告 Apare_xzc 2020/2/13 考生须知 A. 平方和(5分) 分析: 这个题就是简单的模拟.只要循环一遍,判断每个数是否含有2019,然后平方相加即 ...

  3. oracle定时器每天下午6点_强力巨彩冠名!6月23日下午15点直播抢先看

    高工新型显示产业圈群招募中,欢迎感兴趣的产业界朋友们加微信号:13066835295入群:添加微信时请备注单位-职务-姓名,通过审核后我们将邀请入群. 在首期直播实现超4000位LED产业链人士在线观 ...

  4. 【蓝桥杯第八届省赛_电子钟】

    蓝桥杯第八届省赛_电子钟 修改版本 基础知识学习来自小蜜蜂老师 yyds 下面代码功能没有完全实现 有误还望大佬指正 总结分析: 第八届题目难度从我个人来说明显会比第七届难了很多,当然也可能是我自己这 ...

  5. 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...

    介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...

  6. c++判断奇偶_第十一届(今年)蓝桥杯省模拟赛 试题+源码 C/C++详解

    后台回复开发工具,免费获取C语言常用编译器 本文章来源:CSDN|亓官劼 本文是第十一届蓝桥杯省模拟赛的试题和部分题解,博主参加的是4.13日的下午场,也就是本次模拟赛的第一天了吧,不知道有没有上午场 ...

  7. 【PTA】2022年蓝桥杯及天梯赛赛前训练(C++练习)

    [PTA]2022年蓝桥杯及天梯赛赛前训练(C++练习) 前言 L1-1 嫑废话上代码 L1-2 猫是液体 L1-3 洛希极限 L1-4 调和平均 L1-5 胎压监测 L1-6 吃火锅 L1-7 前世 ...

  8. 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)

    目录 第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾) 试题 A: 九进制转十进制 试题 B: 顺子日期 试题 C: 刷题统计 试题 D: 修剪灌木 试题 E: X 进制减法 试题 F: ...

  9. 第十四届蓝桥杯校内模拟赛第一期——Python

    第十四届蓝桥杯校内模拟赛第一期--Python 文章目录 第十四届蓝桥杯校内模拟赛第一期--Python 1.二进制位数 问题描述 参考答案 扩展 2. 晨跑 问题描述 参考答案 扩展 3. 调和级数 ...

最新文章

  1. 图灵十二月书讯 ——年底大餐
  2. @jsonProperty 实现返回自定义属性名字
  3. python适合做后端开发吗-用Python做后台开发,看这一篇就够了
  4. c语言奇数值结点链表,习题11-7 奇数值结点链表 (20 分)
  5. com.sun.mail.smtp.SMTPSendFailedException: 550 Invalid User
  6. 音视频技术开发周刊 72期
  7. mysql怎么查看索引情况_mysql 查看索引使用情况
  8. jsp mysql做登入界面_用jsp实现网站登录界面的制作,并连接数据库
  9. Spring Boot基础学习笔记16:项目打包部署
  10. 基于ffmpeg入门学习相关的资料
  11. 如何才能降低真机测试成本和建议所使用平台
  12. 怎么从php文件中查找代码,php类在文件中查找类文件,但不查找类
  13. 内容分发网络:请简述 CDN 回源如何工作?
  14. mysql五日均线_终于有人把“5日均线做短线”的精髓讲透了!
  15. 为什么选择IT行业,原因是什么
  16. C++将一个cpp文件中的变量应用到另一个cpp文件中
  17. 利用闲置的树莓派4B搭建一个NAS(二)
  18. opencv3之SVD
  19. IDEA如何设置热启动
  20. 关于线程的interrupt与sleep问题

热门文章

  1. linux基本操作/ubuntu
  2. cybrics2021_pwn
  3. 医疗机器人软件中的机器人协作技术:医疗机器人与机器人的结合
  4. 叶酸偶联壳聚糖载多西他赛纳米粒(FA-CTS/DTX)纳米粒
  5. 用生日攻击方法求解离散对数问题(C语言实现)-大三密码学实验
  6. Hyperledger Fabric构建第一个网络(官方教程)
  7. element plus修改CheckBox样式
  8. 目录删除-C语言实现
  9. vs2019 应用程序无法正常启动(0xc000007b)
  10. NP难和NP完全问题