我是岛屿大师

104. 建造最大岛屿 (kamacoder.com)

  1. n,m=map(int,input().split())
  2. g=[]
  3. for i in range(n):
  4.     g.append(list(map(int,input().split())))
  5. maxsum=0
  6. dir=[[0,1],[0,-1],[1,0],[-1,0]]
  7. s=0
  8. def dfs(x,y):
  9.     global s
  10.     s+=1
  11.     visit[x][y]=True
  12.     for i,j in dir:
  13.         next_x=x+i
  14.         next_y=y+j
  15.         if next_x<0 or next_x>=n or next_y<0 or next_y>=m:
  16.             continue
  17.         if not visit[next_x][next_y] and g[next_x][next_y]==1:
  18.             dfs(next_x,next_y)
  19. for i in range(n):
  20.     for j in range(m):
  21.         if g[i][j]==0 :
  22.             visit=[[False]*m for _ in range(n)]
  23.             s=0
  24.             g[i][j]=1
  25.             dfs(i,j)
  26.             maxsum=max(maxsum,s)
  27.             g[i][j]=0
  28. if maxsum==0:
  29.     print(max(m,n))
  30. else:
  31.     print(maxsum)

发表评论