defdfs(x, y, graph):if x<0or x>=len(graph)or y<0or y>=len(graph[0])or graph[x][y]==0:return
graph[x][y]=0
dfs(x+1, y, graph)
dfs(x-1, y, graph)
dfs(x, y+1, graph)
dfs(x, y-1, graph)if __name__=='__main__':
r,l =map(int,input().split(' '))
graph =[]for i inrange(r):
row =list(map(int,input().split(' ')))
graph.append(row)
result =0for i inrange(r):for j inrange(l):if graph[i][j]==1:
dfs(i,j,graph)
result+=1print(result)
岛屿数量 广搜
from collections import deque
defbfs(x, y, graph):
graph[x][y]=0
que = deque([[x,y]])while que:
x, y = que.popleft()
directions =[[0,1],[0,-1],[1,0],[-1,0]]for k inrange(4):
x0, y0 = directions[k]
new_x = x+x0
new_y = y+y0
if new_x>=0and new_x<len(graph)and new_y>=0and new_y<len(graph[0])and graph[new_x][new_y]==1:
que.append([new_x, new_y])
graph[new_x][new_y]=0returnif __name__=='__main__':
r,l =map(int,input().split(' '))
graph =[]for i inrange(r):
row =list(map(int,input().split(' ')))
graph.append(row)
result =0for i inrange(r):for j inrange(l):if graph[i][j]==1:
bfs(i,j,graph)
result+=1print(result)
岛屿的最大面积
bfs
from collections import deque
defbfs(x, y, graph):
s=1
graph[x][y]=0
que = deque([[x,y]])while que:
x, y = que.popleft()
directions =[[0,1],[0,-1],[1,0],[-1,0]]for k inrange(4):
x0, y0 = directions[k]
new_x = x+x0
new_y = y+y0
if new_x>=0and new_x<len(graph)and new_y>=0and new_y<len(graph[0])and graph[new_x][new_y]==1:
que.append([new_x, new_y])
graph[new_x][new_y]=0
s+=1return s
if __name__=='__main__':
r,l =map(int,input().split(' '))
graph =[]for i inrange(r):
row =list(map(int,input().split()))
graph.append(row)
result =0for i inrange(r):for j inrange(l):if graph[i][j]==1:
s = bfs(i,j,graph)
result =max(result, s)print(result)
dfs
defdfs(x, y, graph, s):if x<0or x>=len(graph)or y<0or y>=len(graph[0])or graph[x][y]==0:return s
graph[x][y]=0
s+=1
s = dfs(x+1, y, graph, s)
s = dfs(x-1, y, graph, s)
s = dfs(x, y+1, graph, s)
s = dfs(x, y-1, graph, s)return s
if __name__=='__main__':
r,l =map(int,input().split())
graph =[]for i inrange(r):
row =list(map(int,input().split()))
graph.append(row)
result =0for i inrange(r):for j inrange(l):if graph[i][j]==1:
s = dfs(i,j,graph,0)
result =max(result, s)print(result)
五、整数集合(Intset)
整数集合是 Redis 中 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集合这个数据结构作为底层实现。整数集合通过紧凑的内存布局和升级机制,实现了…