总时间限制: 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
|
样例输出
来源
医学部计算概论 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; }
|