APCS實作解題:特殊位置(112年6月)

https://zerojudge.tw/ShowProblem?problemid=k732

解題思路:

  • 找出二維座標上的每個點曼哈頓距離 是x的點
  • 如果曼哈頓距離是md, 座標點(i, j) 上下左右差距md的點只要滿足曼哈頓距離小於md的點都要加總

Python解:

all_inputs = []
nm = input().split()
n = int(nm[0])
m = int(nm[1])

all_inputs.append(nm)
for i in range(n):
  tt = input()
  all_inputs.append(tt)

a = []
for k in range(1, n+1):

  ai = all_inputs[k].split()
  ai = [int(ai[j]) for j in range(m)]
  a.append(ai)

ans = []
for i in range(n):

  for j in range(m):
    md = a[i][j]

    if md <0:
      continue

    # region of md
    
    s = 0
  
    i0 = max(0, i-md)
    i1 = min(n, i+md+1)
    for ii in range(i0, i1):
       
      j0 = max(0, j-md)
      j1 = min(m, j+md+1)
       
      for jj in range(j0, j1):
       
        if abs(ii-i) + abs(jj-j) <= md:
          s += a[ii][jj]

   

    if s %10 == md:
      ans.append((i, j))
    

print(len(ans))
for a in ans:
  print(str(a[0]) + ' ' + str(a[1]))