深圳集团网站建设服务,怎么做网站流量统计分析,简单的个人网站下载,上海专业网站建设【问题描述】
在一个正方形的灰度图片上#xff0c;肿瘤是一块矩形的区域#xff0c;肿瘤的边缘所在的像素点在图片 中用 0 表示。其它肿瘤内和肿瘤外的点都用 255 表示。现在要求你编写一个程序#xff0c;计算肿瘤内部的像素点的个数#xff08;不包括肿瘤边缘上的点肿瘤是一块矩形的区域肿瘤的边缘所在的像素点在图片 中用 0 表示。其它肿瘤内和肿瘤外的点都用 255 表示。现在要求你编写一个程序计算肿瘤内部的像素点的个数不包括肿瘤边缘上的点。已知肿瘤的边缘平行于图像的边缘。
【输入形式】
输入的第一行是一个正整数n(3n600),表示正方形的边长接下来的n行每行有n个由空格隔开的n个整数表示每个像素点。 【输出形式】
输出包括一行这一行只包含一个整数表示肿瘤内部的像素点的个数。
【样例输入】
3 0 0 0 0 255 0 0 0 0 【样例输出】
1
算法思路由题目可知肿瘤的面积是个矩形主要运用二维数组进行求解。只要找到左上角和右下角的肿瘤就可以求出其面积。对于左上角的肿瘤需要判断该位置和右侧以及下侧均为肿瘤对于右下角的肿瘤需要判断该位置和左侧以及上侧均为肿瘤。左上角通过正向双重循环遍历右下角则通过逆向双重循环遍历。
#include iostream
using namespace std;
int main()
{int n,x1,y1,x2,y2;cinn;int a[n][n];for(int i0; in; i){for(int j0; jn; j){cina[i][j];}}int p,q,sign0;for(p0; pn; p){for(q0; qn; q){if(a[p][q]0a[p][q1]0a[p1][q]0)//该位置、下、右{sign1;y1q;break;}}if(sign1){x1p;break;}}sign0;int u,v;for(un-1; u1; u--){for(vn-1; v1; v--){if(a[u][v]0a[u][v-1]0a[u-1][v]0)//该位置、上、左{sign1;y2v;break;}}if(sign1){x2u;break;}}int sum;sum(x2-x1-1)*(y2-y1-1);coutsum;return 0;
}