哪里错了 四角泛洪
查看原帖
哪里错了 四角泛洪
1018469
psy7604楼主2024/4/17 20:35
def dfs(grid, i, j, x, y, visit):
    if i < 0 or j < 0 or i >= x or j >= y:
        return

    visit[i][j] = 0
    grid[i][j] = '*'

    for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
        nx, ny = i + dx, j + dy
        if 0 <= nx < x and 0 <= ny < y and grid[nx][ny] == '0' and not visit[nx][ny]:
            dfs(grid, nx, ny, x, y, visit)

def countArea(grid, x, y):
    count = 0
    for i in range(x):
        for j in range(y):
            if(grid[i][j] == '0'):
                count += 1

    return count

x, y = map(int, input().split())
grid = [list(input()) for _ in range(x)]

for row in grid:
    row.insert(0, '0')
    row.append('0')
grid.insert(0, ['0'] * (y + 2))
grid.append(['0'] * (y + 2))


visit = [[0 for _ in range(y + 2)] for _ in range(x + 2)]

dfs(grid, 0, 0, x + 2, y + 2, visit)
dfs(grid, 0, y + 1, x + 2, y + 2, visit)
dfs(grid, x + 1, 0, x + 2, y + 2, visit)
dfs(grid, x + 1, y + 1, x + 2, y + 2, visit)

print(countArea(grid, x, y))

自己测的数据是对的啊,不懂

2024/4/17 20:35
加载中...