C++98代码实现方格图好朋友计数

小 C 和方格是好朋友。

小 C 有一个 n 行 m 列的方格图,每个方格中都有一个数字,其中第 i 行第 j 列的方格中的数字为 'ai,j'。

我们定义,在这个方格图中,两个不同的方格不相邻,当且仅当这两个方格没有公共边。

小 C 认为,两个不同的方格互为好朋友,当且仅当这两个方格不相邻且这两个方格中的数字相同。

小 C 想让你帮忙求出,所有方格的好朋友的数量之和是多少。

输入格式

第一行两个整数 'n,m'。

接下来 'n' 行,每行 'm' 个整数,其中第 'i' 行的第 'j' 个整数表示 'ai,j'。

输出格式

一个整数,表示所有方格的好朋友的数量之和。

输入输出样例

输入 #1

3 4
1 1 4 5
2 1 2 3
3 1 4 1

输出 #1

20

C++98 代码实现

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    vector<vector<int>> grid(n, vector<int>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> grid[i][j];
        }
    }

    int total = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            int count = 0;
            // 上方格
            if (i > 0 && grid[i-1][j] == grid[i][j]) {
                count++;
            }
            // 下方格
            if (i < n-1 && grid[i+1][j] == grid[i][j]) {
                count++;
            }
            // 左方格
            if (j > 0 && grid[i][j-1] == grid[i][j]) {
                count++;
            }
            // 右方格
            if (j < m-1 && grid[i][j+1] == grid[i][j]) {
                count++;
            }
            total += count;
        }
    }

    cout << total << endl;

    return 0;
}

代码说明:

  1. 使用 vector<vector<int>> 存储方格图,方便访问每个方格的数字。
  2. 遍历所有方格,对于每个方格,判断其上下左右四个方向是否存在与自身数字相同且不相邻的方格,并统计数量。
  3. 最终将所有方格的好朋友数量之和输出。
C++98代码实现方格图好朋友计数

原文地址: https://www.cveoy.top/t/topic/qvp7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录