日期:2025年7月16日
ZeroJudge 題目連結:a746. 画蛇添足
解題想法
這題的測資 2 有空行,如果用 Python 需要過濾掉空行,否則會出錯。而且這題的記憶體限制很嚴格,如果用 Python 直接産生 $(n+2) \times (n+2)$ 的二維串列會超過記憶體上限。
Python 程式碼
第3行是為了濾掉測資中的空行,但是這樣測試不會過,因為本題的記憶體限制很嚴格,在第 7 行産生 $(n+2) \times (n+2)$ 的二維串列時會超過記憶體上限。
import sys
lines = [line for line in sys.stdin.readlines() if line.strip()]
idx = 0
while idx < len(lines):
n, m = map(int, lines[idx].split())
idx += 1
grid = [[" "]*(n+2) for _ in range(n+2)]
for c in range(n+2):
grid[0][c] = grid[n+1][c] = "-"
for r in range(1, n+1):
grid[r][0] = grid[r][n+1] = "|"
ri, ci = map(int, lines[idx].split())
idx += 1
for _ in range(m-1):
rf, cf = map(int, lines[idx].split())
idx += 1
if ri == rf:
for c in range(min(ci, cf), max(ci, cf)+1):
grid[ri][c] = "*"
elif ci == cf:
for r in range(min(ri, rf), max(ri, rf)+1):
grid[r][ci] = "*"
ri, ci = rf, cf
for row in grid:
sys.stdout.write("".join(row) + "\n")