#40745: py解,先找水平再找垂直,差20%


rain0927117302@gmail.com (Rain Cheng)

學校 : 不指定學校
編號 : 257798
來源 : [219.70.69.156]
最後登入時間 :
2024-06-11 00:16:57
m371. 2. 卡牌遊戲 -- 2023年10月APCS | From: [219.70.69.156] | 發表日期 : 2024-06-11 00:45

n ,m = map(int, input().split())
a = []
for _ in range(n):
    a.append([int(x) for x in input().split()])
 
def find_down(x, y):
    for i in range(1, n - x):
        if a[x + i][y] == a[x][y]:
            return 1, x + i, y
        if a[x + i][y] != -1:
            break
    return 0, 0, 0

 

def find_right(x, y):
    for i in range(1, m - y):
        if a[x][y + i] == a[x][y]:
            return 1, x, y + i
        if a[x][y + i] != -1:
            break
    return 0, 0, 0

 

point = 0
Finish = True
while Finish:
    c = 0
    for i in range(n):
        for j in range(m):
            check = 0
            if a[i][j] > -1:
                check,xx,yy = find_right(i, j)
                if check:
                    c += 1
                    point += a[i][j]
                    a[i][j] = a[xx][yy] = -1
                check,xx,yy = find_down(i, j)
                if check:
                    c += 1
                    point += a[i][j]
                    a[i][j] = a[xx][yy] = -1
               
    if c == 0:
        Finish = False
print(point)
 
ZeroJudge Forum