openjudge 1.8.19 肿瘤检测

OpenJudge - 19:肿瘤检测


解题思路:

1.由题可得,判断肿瘤的面积和长度,面积的个数为小于等于50的数量,所以面积比较好算,接下来看周长,如果这个点是小于等于50的,并且上下左右有任意一个点是大于50 的话即为周长点,此外还有一种情况,如果此点在边界上,那么即使周围都是小于等于50的,该点 也是周长点

2.涉及到上下左右,所以会想到方向数组,定义两个一维数组,代表遍历到四个方向的行号,列号,然后输入二维数组数据,依次遍历

3.如果该点是小于等于50的那么sum++,表示面积数增加,然后利用打标记的方法判断上下左右是否有大于50的点,如果有,则说明是周长点,或者该点的坐标位于四周最外圈,也为周长点len++

4.输出面积和周长


#include
using namespace std;int a[105][105];
int xx[7]={0,-1,1,0,0};//定义方向数组上下左右的行号 
int yy[7]={0,0,0,-1,1};//列号 int main()
{int n,sum=0,len=0;cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>a[i][j];//输入数据到二维数组 for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)//依次遍历每个位置 {if(a[i][j]<=50)//如果这个点的值小于等于50 {bool flag=1;//判断标记初始为1 sum++;//面积数增加 for(int k=1;k<=4;k++){int x=i+xx[k];//更新行号 int y=j+yy[k];//更新列号 if(x>=1&&x<=n&&y>=1&&y<=n)//如果没有越界的话 if(a[x][y]>50)//有一个点是大于50的 {flag=0;//标记赋值为0,证明是周长的点 break;//退出循环 }}if(flag==0||i==1||i==n||j==1||j==n)//如果该点是周长点,或者位于边界上 len++;//长度增加1 }}}cout<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部