2208F 俊俏地鼠的远亲

· · 题解

Source & Knowledge

2022年8月语言月赛,由洛谷网校入门计划/基础计划提供。

由皎月半撒花命题。

考察二维数组与多重循环。

文字题解

题意简述

给出一个 n \times m 的矩阵,每个位置上有一个数字 b_{i,j},若 b_{x,y}=b_{i,j},则称 (x,y)(i,j) 的亲戚,他们的距离为 (x-i)^2 + (y-j)^2

对于每个位置,求亲戚的最远距离。

问题分析

我们可以枚举位置 (i,j),再枚举位置 (x,y),如果它们数字相等,则更新位置 (i,j) 上的答案。

需要注意的是 ^ 符号在 C++ 语言中不代表乘方的意思,该符号在 C++ 中为异或运算。x^2 需要用 x * x 来表达。

在本题中,n 代表行,m 代表列,需要看清,不能写错。

for(int i = 1; i <= n; i++) {
    for(int j = 1; j <= m; j++) {
        for(int x = 1; x <= n; x++) {
            for(int y = 1; y <= m; y++) {
                if(b[i][j] == b[x][y]) {
                    ans[i][j] = max(ans[i][j], (i - x) * (i - x) + (j - y) * (j - y);
                }
            }
        }
    }
}

视频题解