目录
python农田划分
一、题目要求
1、编程实现
2、输入输出
二、算法分析
三、程序编写
四、程序说明
五、运行结果
六、考点分析
七、 推荐资料
1、蓝桥杯比赛
2、考级资料
3、其它资料
python农田划分
第十三届蓝桥杯青少年组python比赛省赛真题
一、题目要求
(注:input()输入函数的括号中不允许添加任何信息)
1、编程实现
有一块农田被划分为N*M块,农作物和杂草分布生长在农田中,其中农作物使用大写字母"R"表示,杂草使用大写字母”X"表示。请计算出农田中有几块独立的农作物区域(独立的农作物区域指该区域上下左右都被杂草围住,目N*M以外的区域都是杂草)。
例如:N=4,M=4,4*4的农田中农作物和杂草分布如下图:
这块4*4的农田中有3块独立的农作物区域(红色的3部分)。
2、输入输出
输入描述:第一行输入两个整数N和M(1≤N≤100,1≤M≤100)N表示农田的行数,M表示农田的列数,且两个正整数之间以一个英文逗号隔开;
接下来的N行每行包括M个字符(字符只能为R或X),R表示农作物,X表示杂草,字符之间以一个英文逗号隔开。
输出描述:输出一个整数,表示N*M的农田中有几块独立的农作物区域
输入样例:
4,4
R,R,R,X
R,X,R,X
X,X,X,R
R,X,X,X
输出样例:
3
二、算法分析
- 题目相对而言有一定的难度,难在如何辨别是否独立模块
- 具体的就是判断二维矩阵中的上下左右四个方向的值
- 然后从1到N逐个进行判断是否是整数
- 如果是整数就进行输出即可
三、程序编写
n, m = map(int,input().split(','))
r = []
res = 0
def f(x, y):
r[x][y] = 'C'#表示访问过check
if x>0:
if r[x-1][y] == 'R':
f(x-1, y)
if x<n-1:
if r[x+1][y] == 'R':
f(x+1, y)
if y > 0:
if r[x][y-1] == 'R':
f(x, y-1)
if y < m-1:
if r[x][y+1] == 'R':
f(x, y+1)
for i in range(n):
t = input().split(',')
r.append(t)
for i in range(n):
for j in range(m):
if r[i][j] == 'R':
res += 1
f(i, j)
print(res)
四、程序说明
- 首先,程序通过 n, m = map(int, input().split(',')) 从输入中获取矩阵的大小,其中 n 表示行数,m 表示列数。
- 接下来,创建一个空的二维数组 r 用于存储输入的矩阵。
- 定义一个递归函数 f(x, y) 用于遍历矩阵中的元素。
- 这个函数首先将当前位置的元素设为 'C',表示已经访问过。
- 接着分别访问当前位置的上下左右四个方向的值,如果四个方向上有 'R',则继续递归调用 f 函数
- 在遍历完整个矩阵后,使用嵌套循环遍历每个元素,如果元素为 'R',则调用 f 函数进行遍历,并将结果累加到 res 变量上
- 最后通过print函数打印结果 res,即矩阵中连续的 'R' 的数量。
五、运行结果
4,4
R,R,R,X
R,X,R,X
X,X,X,R
R,X,X,X
3
六、考点分析
难度级别:难,这题相对而言还是有一点小难度,难在如何进行上下左右检测,具体主要考查如下:
- 学会分析题目,找到解题思路
- 学会递归函数的定义和使用
- input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
- int函数:强制将传入对象转换成整数类型
- split函数:按照指定的分隔符进行分割
- map函数:将指定的对象按照指定的函数进行迭代,在这里是将时分秒字符串类型数据按int整数类型数字返回输出(相当于多个变量强制类型转化)
- list函数:强制将参数转化成列表对象
- 学会列表的相关操作:列表声明、取数、遍历等等
- 学会for循环的使用:for循环可以遍历任何有序的项及列表元素等等。
- range函数:rang(a,b),循环的时候是不包括b的,所以我们这个案例中要转变一下,要想包含b,就应该写成range(a,b+1)
- 学会if...条件判断语句的使用:满足条件才执行相应的程序
- 学会if...else双分支语句的使用:满足条件执行一种处理程序,不满足执行另一种处理程序
- print函数:用于打印输出,最常见的一个函数。
- 充分掌握for循环,递归函数和列表相关操作函数的使用
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!
七、 推荐资料
- 所有考级比赛学习相关资料合集【推荐收藏】
1、蓝桥杯比赛
-
蓝桥杯python选拔赛真题详解
-
蓝桥杯python省赛真题详解
-
蓝桥杯python国赛真题详解
-
历届蓝桥杯科技素养计算思维真题解析
2、考级资料
-
python等级一级真题解析【电子学会】
-
python等级二级真题解析【电子学会】
-
python等级三级真题解析【电子学会】
-
python等级四级真题解析【电子学会】
3、其它资料
-
初学python100例
- 历届蓝桥杯scratch国赛真题解析
- 历届蓝桥杯scratch省赛真题解析
- 历届蓝桥杯scratch STEMA选拔赛真题解析
- 历届蓝桥杯科技素养计算思维真题解析
- 画图-scratch编程考级99图
- 电子学会历年scratch等级考试一级真题解析
- 电子学会历年scratch等级考试二级真题解析
- 电子学会历年scratch等级考试三级真题解析
- 电子学会历年scratch等级考试四级真题解析
- 零基础学习scratch3.0【入门教学 免费】
- 零基础学习scratch3.0【视频教程 114节 免费】