Loading

连连看【蓝桥杯】【算法】

n, m = map(int, input().split())
matrix = []
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

count = 0
for i in range(n):
    for j in range(m):
        num = matrix[i][j]
        # 向右下对角线方向寻找
        for k in range(1, min(n - i, m - j)):
            if matrix[i + k][j + k] == num:
                count += 1
        # 向右上对角线方向寻找
        for k in range(1, min(i + 1, m - j)):
            if matrix[i - k][j + k] == num:
                count += 1
        # 向左下对角线方向寻找
        for k in range(1, min(n - i, j + 1)):
            if matrix[i + k][j - k] == num:
                count += 1
        # 向左上对角线方向寻找
        for k in range(1, min(i + 1, j + 1)):
            if matrix[i - k][j - k] == num:
                count += 1

print(count)
posted @ 2025-04-07 10:21  一只大学生  阅读(15)  评论(0)    收藏  举报