mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
feat: python solution, DFS
This commit is contained in:
@ -355,6 +355,62 @@ public class Main {
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
```Python
|
||||||
|
first = set()
|
||||||
|
second = set()
|
||||||
|
directions = [[-1, 0], [0, 1], [1, 0], [0, -1]]
|
||||||
|
|
||||||
|
def dfs(i, j, graph, visited, side):
|
||||||
|
if visited[i][j]:
|
||||||
|
return
|
||||||
|
|
||||||
|
visited[i][j] = True
|
||||||
|
side.add((i, j))
|
||||||
|
|
||||||
|
for x, y in directions:
|
||||||
|
new_x = i + x
|
||||||
|
new_y = j + y
|
||||||
|
if (
|
||||||
|
0 <= new_x < len(graph)
|
||||||
|
and 0 <= new_y < len(graph[0])
|
||||||
|
and int(graph[new_x][new_y]) >= int(graph[i][j])
|
||||||
|
):
|
||||||
|
dfs(new_x, new_y, graph, visited, side)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
global first
|
||||||
|
global second
|
||||||
|
|
||||||
|
N, M = map(int, input().strip().split())
|
||||||
|
graph = []
|
||||||
|
for _ in range(N):
|
||||||
|
row = input().strip().split()
|
||||||
|
graph.append(row)
|
||||||
|
|
||||||
|
# 是否可到达第一边界
|
||||||
|
visited = [[False] * M for _ in range(N)]
|
||||||
|
for i in range(M):
|
||||||
|
dfs(0, i, graph, visited, first)
|
||||||
|
for i in range(N):
|
||||||
|
dfs(i, 0, graph, visited, first)
|
||||||
|
|
||||||
|
# 是否可到达第二边界
|
||||||
|
visited = [[False] * M for _ in range(N)]
|
||||||
|
for i in range(M):
|
||||||
|
dfs(N - 1, i, graph, visited, second)
|
||||||
|
for i in range(N):
|
||||||
|
dfs(i, M - 1, graph, visited, second)
|
||||||
|
|
||||||
|
# 可到达第一边界和第二边界
|
||||||
|
res = first & second
|
||||||
|
|
||||||
|
for x, y in res:
|
||||||
|
print(f"{x} {y}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
```
|
||||||
|
|
||||||
### Go
|
### Go
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user