码迷,mamicode.com
首页 > 其他好文 > 详细

原POJ 2713 肿瘤面积

时间:2015-02-11 21:50:25      阅读:711      评论:0      收藏:0      [点我收藏+]

标签:

描述

在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。

 

输入

只有一个测试样例。第一行有一个整数n,表示正方形图像的边长。其后n行每行有n个整数,取值为0或255。整数之间用一个空格隔开。已知n不大于1000。

 

输出

输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。

 

样例输入

5
255 255 255 255 255
255 0 0 0 255
255 0 255 0 255
255 0 0 0 255
255 255 255 255 255

样例输出

1
 1 #include<cstdio>
 2 
 3 const int maxn = 1000+5;
 4 int pic[maxn][maxn];
 5 
 6 int main() {
 7     int n, begin[2], end[2], t=0;
 8     scanf("%d",&n);
 9     for(int i=0; i<n; i++)
10         for(int j=0; j<n; j++)
11             scanf("%d", &pic[i][j]);
12     for(int i=0; i<n; i++){
13         if(t) break;
14         for(int j=0; j<n; j++) {
15             if(!pic[i][j]) {
16                 begin[0]=i;
17                 begin[1]=j;
18                 t=1;
19                 break;
20             }
21         }
22     }
23     for(int i=n-1; i>=0; i--) {
24         if(!t) break;
25         for(int j=n-1; j>=0; j--) {
26             if(!pic[i][j]) {
27                 end[0]=i;
28                 end[1]=j;
29                 t=0;
30                 break;
31             }
32         }
33     }
34     int s=(end[0]-begin[0]-1)*(end[1]-begin[1]-1);
35     printf("%d\n" ,s);
36     return 0;
37 }

有个细节:比较大的数组尽量声明在main函数外,因为 main()里面用的是程序的栈,WINDOWS栈空间为1M,即1024*1024=1048576字节 。


这题也很水,不过由于数据录入过多,不能用iostream,否则超时

原POJ 2713 肿瘤面积

标签:

原文地址:http://www.cnblogs.com/liangyongrui/p/4286961.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!