101. 孤岛的总面积
基础题目 可以自己尝试做一做 。
代码随想录
把处于边界上的岛屿全部消除,剩下的就是孤岛
python
direction=[[0,1],[0,-1],[1,0],[-1,0]]
count=0
def dfs(grid,x,y):
global count
grid[x][y]=0
count+=1
for i,j in direction:
next_x=x+i
next_y=y+j
if next_x<0 or next_x>=len(grid) or next_y<0 or next_y>=len(grid[0]):
continue
if grid[next_x][next_y]==1:
dfs(grid,next_x,next_y)
if __name__=='__main__':
n,m=map(int,input().split())
grid=[]
for i in range(n):
grid.append(list(map(int,input().split())))
for i in range(n):
if grid[i][0]==1:
dfs(grid,i,0)
if grid[i][m-1]==1:
dfs(grid,i,m-1)
for j in range(m):
if grid[0][j]==1:
dfs(grid,0,j)
if grid[n-1][j]==1:
dfs(grid,n-1,j)
count=0
for i in range(n):
for j in range(m):
if grid[i][j]==1:
dfs(grid,i,j)
print(count)
102. 沉没孤岛
和上一题差不多,尝试自己做做
代码随想录
在上一题的基础上修改
python
direction=[[0,1],[0,-1],[1,0],[-1,0]]
flag=False
def dfs(grid,x,y):
global flag
if flag==False:
grid[x][y]=2
else:
grid[x][y]=0
for i,j in direction:
next_x=x+i
next_y=y+j
if next_x<0 or next_x>=len(grid) or next_y<0 or next_y>=len(grid[0]):
continue
if grid[next_x][next_y]==1:
dfs(grid,next_x,next_y)
if __name__=='__main__':
n,m=map(int,input().split())
grid=[]
for i in range(n):
grid.append(list(map(int,input().split())))
for i in range(n):
if grid[i][0]==1:
flag=False
dfs(grid,i,0)
if grid[i][m-1]==1:
flag=False
dfs(grid,i,m-1)
for j in range(m):
if grid[0][j]==1:
flag=False
dfs(grid,0,j)
if grid[n-1][j]==1:
flag=False
dfs(grid,n-1,j)
for i in range(n):
for j in range(m):
if grid[i][j]==1:
flag=True
dfs(grid,i,j)
for i in range(n):
for j in range(m):
if grid[i][j]==2:
grid[i][j]=1
for row in grid:
print(' '.join(map(str, row)))