问题描述】
在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片 中用 0 表示。其它肿瘤内和肿瘤外的点都用 255 表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。
【输入形式】
输入的第一行是一个正整数n(3<=n<=600),表示正方形的边长,接下来的n行,每行有n个由空格隔开的n个整数,表示每个像素点。
【输出形式】
输出包括一行,这一行只包含一个整数,表示肿瘤内部的像素点的个数。
【样例输入】
3 0 0 0 0 255 0 0 0 0
【样例输出】
1
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a[601][601];//定义一个数组
int x1=-1,y1=-1,x2=-1,y2=-1;//x1,y1,左上角的坐标 x2,y2 右下角的坐标
int n;
cin>>n;
for(int i=0;i<n;i++)//输入数据
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<n;i++)//判断x1,y1的位置
{
for(int j=0;j<n;j++)
{
if(a[i][j]==0)
{
x1=i;y1=j;
break;
}
}
if(x1!=-1)
break;
}
for(int i=0;i<n;i++)//判断x2,y2的位置
{
for(int j=0;j<n;j++)
{
if(a[i][j]==0)
{
x2=i;y2=j;
}
}
}
int c,k;
c=x2-x1-1;
k=y2-y1-1;
int sum;
sum=c*k;
cout<<sum;
}