再会
请帮我找出代码中的错误。屏幕截图中的任务\
代码:
x, y, k = map(int, input().split())
mines = []
for i in range(k):
a, b = map(int, input().split())
mines.append((a - 1, b - 1))
field = [list(0 for j in range(x)) for i in range(y)]
for mine in mines:
field[mine[1]][mine[0]] = "*"
if mine[1] - 1 >= 0 and mine[0] - 1 >= 0 and field[mine[1]-1][mine[0]-1] !="*":
field[mine[1]-1][mine[0]-1] += 1
if mine[1] - 1 >= 0 and field[mine[1]-1][mine[0]] !="*":
field[mine[1]-1][mine[0]] += 1
if mine[1] - 1 >= 0 and mine[0] + 1 <= (x-1) and field[mine[1]-1][mine[0]+1] !="*":
field[mine[1]-1][mine[0]+1] += 1
if mine[0] - 1 >= 0 and field[mine[1]][mine[0]-1] !="*":
field[mine[1]][mine[0]-1] += 1
if mine[0] + 1 <= (x-1) and field[mine[1]][mine[0]+1] !="*":
field[mine[1]][mine[0]+1] += 1
if mine[1] + 1 <= (y-1) and mine[0] - 1 >= 0 and field[mine[1]+1][mine[0]-1] !="*":
field[mine[1]+1][mine[0]-1] += 1
if mine[1] + 1 <= (y-1) and field[mine[1]+1][mine[0]] !="*":
field[mine[1]+1][mine[0]] += 1
if mine[1] + 1 <= (y-1) and mine[0] + 1 <= (x-1) and field[mine[1]+1][mine[0]-1] !="*":
field[mine[1]+1][mine[0]+1] += 1
for i in range(x):
for j in range(y):
print(field[j][i], end = " ")
print()
当检查关闭时,它显示错误的答案。我不知道它是从什么输入数据获得的。当我自己输入值时似乎没有错误
还有另一种解决方案:
x, y, k = map(int, input().split())
mines = []
for i in range(k):
a, b = map(int, input().split())
mines.append((a - 1, b - 1))
field = [[0 for j in range(y)] for i in range(x)]
directions = [
(-1, -1), (-1, 0), (-1, 1),
(0, -1), (0, 1),
(1, -1), (1, 0), (1, 1)
]
for mine in mines:
field[mine[0]][mine[1]] = "*"
for d in directions:
new_x = mine[0] + d[0]
new_y = mine[1] + d[1]
if 0 <= new_x < x and 0 <= new_y < y and field[new_x][new_y] != "*":
field[new_x][new_y] += 1
for i in range(x):
for j in range(y):
print(field[i][j], end=" ")
print()
逻辑是相同的,但检查通过并被计数。为什么我不明白,以及在哪些输入数据上答案也会不正确