k732. 特殊位置

題解

題目有說m, n<=50,且每一格的數字都介於0~9。所以可以對於每一個點都畫一個矩形再用if-else判斷是否為距離內的數字,不會TLE。

Python 解答

def check(dis, r, c):
    tmp = 0
    rhead, rend = r-dis, r+dis
    if rhead<0: 
        rhead=0
    if rend>=n: 
        rend= n-1
            
    for i in range(rhead, rend+1): #控制row
        chead, cend = c-dis, c+dis
        if chead<0: 
            chead=0
        if cend>=m: 
            cend=m-1
        
        for j in range(chead, cend+1): #控制col
            if abs(r-i)+abs(c-j)<=dis: #是否在曼哈頓距離中才加總
                tmp += k[i][j]
    
    if tmp%10==dis%10:
        return True
    return False

n, m = map(int, input().split())
k    = [ list(map(int, input().split())) for _ in range(n)]
ans  = [ (i,j) for i in range(n) for j in range(m) if check(k[i][j], i, j)]
print(len(ans))

for i in ans:
    print(*i)