大的变量定义成全局变量

 http://ysusoft.openjudge.cn/2019practice01/04/

04:肿瘤面积

总时间限制:

1000ms
内存限制:
65536kB

描述

在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用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
提示
如果使用静态数组来表示图片数据,需要将该数组定义成全局变量。
来源
2005~2006医学部计算概论期末考试

1
/* 2 ** 为什么定义一个过大的数组或容器,应当把它把它定义为全局变量为宜? 3 **为什么这样就可以得到尽可能大的内存分配? 4 **因为全局变量是存储在静态存储区分配的,这个空间很大 5 **局部变量是在栈空间上分配的,栈空间没那么大,太大了会溢出 6 ——来自百度知道 7 */ 8 # include <stdio.h> 9 int square[1000][1000]; 10 int main (void) 11 { 12 int n; 13 int i, j; 14 15 scanf ( "%d", &n ); //length 16 //printf ( "%d", n ); 17 //INPUT 18 for ( i = 0; i < n; i++ ) 19 for ( j = 0; j < n; j++ ) 20 scanf ( "%d", &square[i][j] ); 21 22 //seek 23 int count = 0; 24 int flag = 0; 25 for ( i = 0; i < n; i++ ) 26 { 27 for ( j = 0; j < n; j++ ) 28 if ( square[i][j] == 0 && flag == 0 ) 29 { 30 flag = 1; 31 continue; 32 } 33 else if ( flag == 1 && square[i][j] == 0 && square[i][j+1] == 255 ) 34 flag = 0; 35 else if ( flag == 1 && square[i][j] == 255 ) 36 count++; 37 flag = 0; 38 } 39 printf ( "%d", count ); 40 41 return 0; 42 }

 

posted @ 2019-07-20 17:41  lavaicer  阅读(302)  评论(0)    收藏  举报