测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25756. 编程实现: 有一块农田被划分为N*M块,农作物和杂草分布生长在农田中,其中农作物使用大写字母“R”表示,杂草使用大写字母“X”表示。请计算出农田中有几块独立的农作物区域(独立的农作物区域指该区域上下左右都被杂草围住,且N*M以外的区域都是杂草)。例如:N=4,M=4,4*4的农田中农作物和杂草分布如下图:这块4*4的农田中有3块独立的农作物区域(红色的3部分)。输入描述:第一行输入两个整数N和M…

填空题 中等

题目描述

编程实现:

有一块农田被划分为N*M块,农作物和杂草分布生长在农田中,其中农作物使用大写字母“R”表示,杂草使用大写字母“X”表示。请计算出农田中有几块独立的农作物区域(独立的农作物区域指该区域上下左右都被杂草围住,且N*M以外的区域都是杂草)。

例如:N=4,M=4,4*4的农田中农作物和杂草分布如下图:

这块4*4的农田中有3块独立的农作物区域(红色的3部分)。

输入描述:

第一行输入两个整数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 def dfs(x,y,xf2): fx=[[0,1],[0,-1],[1,0],[-1,0]] for i in range(4): dx=x+fx[i][0] dy=y+fx[i][1] if(dx<0 or dx>=n or dy<0 or dy>=m): continue if(xf2[dx][dy]==0 or xfs[dx][dy]=='X'): continue xf2[dx][dy]=0 dfs(dx,dy,xf2) return xf2 n,m=input().split(',') n=int(n) m=int(m) xfs=[] xf2=[] for i in range(n): xfs.append(input().split(',')) for i in range(n): xf2.append([]) for j in range(m): xf2[i].append(1) ans=0 for i in range(n): for j in range(m): if(xfs[i][j]=='R' and xf2[i][j]): ans+=1 xf2=dfs(i,j,xf2) print(ans) #参考答案2 n, m = eval(input()) r = [] num = 0 def c(x, y): r[x][y] = 'X' if x>0: if r[x-1][y] == 'R': c(x-1, y) if x<n-1: if r[x+1][y] == 'R': c(x+1, y) if y > 0: if r[x][y-1] == 'R': c(x, y-1) if y < m-1: if r[x][y+1] == 'R': c(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': num += 1 c(i, j) print(num)

答案解析

评分标准:

20分:能正确输出一组数据;

20分:能正确输出两组数据;

20分:能正确输出三组数据;

20分:能正确输出四组数据;

20分:能正确输出五组数据。

上一题 下一题