抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

总时间限制: 1000ms 内存限制: 65536kB

描述

我们拍摄的一张 CT 照片用一个二维数组来存储,假设数组中的每个点代表一个细胞。每个细胞的颜色用 0 到 255 之间(包括 0 和 255)的一个整数表示。我们定义一个细胞是异常细胞,如果这个细胞的颜色值比它上下左右 4 个细胞的颜色值都小 50 以上(包括 50)。数组边缘上的细胞我们不检测。现在我们的任务是,给定一个存储 CT 照片的二维数组,写程序统计照片中异常细胞的数目。

输入

第一行包含一个整数 N(100>=N>2).
下面有 N 行,每行有 N 个 0~255 之间的整数,整数之间用空格隔开。

输出

输出只有一行,包含一个整数,为异常细胞的数目。

样例输入

1
2
3
4
5
4
70 70 70 70
70 10 70 70
70 70 20 70
70 70 70 70

样例输出

1
2

来源

医学部计算概论 2006 期末考试题

思路

从 1 到 N-1 遍历数组,对于每个元素,判断其上下左右四个元素是否满足条件。

Code

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, count = 0;
array<array<int, 100>, 100> a;
cin >> N;
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
cin >> a[i][j];
}
}
for(int i = 1; i < N-1; i++) {
for(int j = 1; j < N-1; j++) {
if(a[i+1][j] - a[i][j] >= 50 || a[i-1][j] - a[i][j] >= 50 || a[i][j+1] - a[i][j] >= 50 || a[i][j-1] - a[i][j] >= 50) {
count++;
}
}
}
cout << count;
}