用窮舉法就可以解了
Map = [list(map(int, input().split())) for i in range(R)]
for r in range(R):
for c in range(C):
if(Map[r][c] == 5):
for i in [(0, 1), (1, 1), (1, 0), (-1, 1), (-1, -1), (1, -1), (-1, 0), (0, -1)]:
if(r + i[0] >= 0 and r + i[0] < R and c + i[1] >= 0 and c + i[1] < C):
if(Map[r + i[0]][c + i[1]] == 5 or Map[r + i[0]][c + i[1]] == 6):
Map[r][c] = 6
pass_count = 0
for r in range(R):
for c in range(C):
if(Map[r][c] == 5):
for i in [(0, 1), (1, 1), (1, 0), (-1, 1), (-1, -1), (1, -1), (-1, 0), (0, -1)]:
if(r + i[0] >= 0 and r + i[0] < R and c + i[1] >= 0 and c + i[1] < C):
if(Map[r + i[0]][c + i[1]] == 1):
Map[r + i[0]][c + i[1]] = 2
pass_count += 1
Nopass_count = 0
for i in Map:
Nopass_count += i.count(1)
print(pass_count, Nopass_count)
先用雙層for迴圈 判斷是否為感測器
1為炸彈
2為被偵測到的答案
5為正常感測器
6為失靈感測器
用窮舉法就可以解了
Map = [list(map(int, input().split())) for i in range(R)]
for r in range(R):
for c in range(C):
if(Map[r][c] == 5):
for i in [(0, 1), (1, 1), (1, 0), (-1, 1), (-1, -1), (1, -1), (-1, 0), (0, -1)]:
if(r + i[0] >= 0 and r + i[0] < R and c + i[1] >= 0 and c + i[1] < C):
if(Map[r + i[0]][c + i[1]] == 5 or Map[r + i[0]][c + i[1]] == 6):
Map[r][c] = 6
pass_count = 0
for r in range(R):
for c in range(C):
if(Map[r][c] == 5):
for i in [(0, 1), (1, 1), (1, 0), (-1, 1), (-1, -1), (1, -1), (-1, 0), (0, -1)]:
if(r + i[0] >= 0 and r + i[0] < R and c + i[1] >= 0 and c + i[1] < C):
if(Map[r + i[0]][c + i[1]] == 1):
Map[r + i[0]][c + i[1]] = 2
pass_count += 1
Nopass_count = 0
for i in Map:
Nopass_count += i.count(1)
print(pass_count, Nopass_count)先用雙層for迴圈 判斷是否為感測器
1為炸彈
2為被偵測到的炸彈
5為正常感測器
6為失靈感測器