C++98代码实现方格图好朋友计数
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;
}
代码说明:
- 使用
vector<vector<int>>存储方格图,方便访问每个方格的数字。 - 遍历所有方格,对于每个方格,判断其上下左右四个方向是否存在与自身数字相同且不相邻的方格,并统计数量。
- 最终将所有方格的好朋友数量之和输出。
原文地址: https://www.cveoy.top/t/topic/qvp7 著作权归作者所有。请勿转载和采集!