POJ 2677 肿瘤检测

时间限制: 
1000ms
内存限制:  
65536kB
描述
一张CT扫描的灰度图像可以用一个N*N(0
输入
输入第一行包含一个正整数N(0
输出
输出只有一行,该行包含两个正整数,分别为给定图像中肿瘤的面积和周长,用一个空格分开。
样例输入
699 99 99 99 99 9999 99 99 50 99 9999 99 49 49 50 5199 50 20 25 52 9940 50 99 99 99 9999 99 99 99 99 99
样例输出
9 8
 
(1)、源代码:
#include

using namespace std;

int main()
{
     int N;
     int size = 0, circle = 0;
     int i, j;
     cin >> N;
     int num[101][101];
     for(i = 0; i < N; i++)
          for(j = 0; j < N; j++)
               cin >> num[i][j];
     for(i = 0; i < N; i++)
          for(j = 0; j < N; j++)
               if(num[i][j] <= 50)
               {
                    size++;
                    if(i == 0 || i == N-1 || j == 0 || j == N-1)
                         circle++;
                    else if(num[i-1][j] > 50 || num[i+1][j] > 50 || num[i][j-1] > 50 || num[i][j+1] > 50)
                         circle++;
               }
     cout << size << " " << circle << endl;
     return 0;
}

(2)、解题思路:略
(3)、出错原因:
可能会在读入数据的时候同时试图计算出边长,但是边读数据边计算边长会导致那些下面一个点不是肿瘤点的边界点不被计入边长,导致错误,因为此时下一行还未读入,没有数据,无法判断。

 
 
 
 

转载于:https://www.cnblogs.com/lydf-2012/archive/2012/05/11/2496646.html

你可能感兴趣的:(POJ 2677 肿瘤检测)