肿瘤大小
在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0 表示。其它肿瘤内和肿瘤外的点都用255 表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。
输出一行,该行包含一个整数,为要求的肿瘤内的像素点的个数。
样例输入: 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
利用数组储存区域,遍历各点,找出符合条件的区域。
#include <stdio.h>
main()
{
int zl[500][500];
int n;
int A,B,R1,C1,R2,C2,C,D;
scanf("%d", &n);
if(n<3)
printf("0\n");
else
for (A = 1; A <= n; A++)
{
for (B = 1; B <= n; B++)
{
scanf("%d", &zl[A][B]);
}
}
for (A = 1; A < n; A++)
{
for (B = 1; B < n; B++)
{
if (zl[A][B] == 0 )
{
R1=A;C1=B;break;
}
}
if (zl[A][B] == 0 )
{
break;
}
}
for (A = n; A > 1; A--)
{
for (B = n; B > 1; B--)
{
if (zl[A][B] == 0 )
{
R2=A;C2=B;break;
}
}
if (zl[A][B] == 0 )
{
break;
}
}
C=R2-R1-1;
D=C2-C1-1;
printf("%d", C*D);
}
运行结果: