日期:2025年7月21日
ZeroJudge 題目連結:b367. 翻轉世界
解題想法
可以用二維串列儲存圖的內容,再從上下兩端逐行檢查,下方的列前後順序對調之後內容是否與上方的列相同;如果共有奇數列,還要再單獨檢查中間的列。也可以將圖的內容接成很長的一維串列,只要從兩端往中間依序檢查數字是否相同,寫起來比較簡單。
Python 程式碼
用二維串列儲存圖的內容,使用時間約為 18 ms,記憶體約為 3.3 MB,通過測試。
def check(grid): # 輸入圖,判斷是否轉 180 度之後對稱
n, m = len(grid), len(grid[0]) # 圖的尺寸
for i in range(n//2): # 從上下兩端往中間檢查
if grid[i] != grid[n-i-1][::-1]: # 如果將底下的列翻轉之後不相等
return False # 回傳 False
if n%2 == 1: # 如果為奇數列,再檢查中間的列
if grid[n//2] != grid[n//2][::-1]:
return False
return True # 最後回傳 True
t = int(input()) # t 張圖
for _ in range(t): # 執行 t 次
n, m = map(int, input().split()) # 圖的尺寸 n*m
grid = [list(map(int, input().split())) for _ in range(n)] # 讀取圖
print("go forward" if check(grid) else "keep defending")