解题思路:
first,理解题意,灰度值<=50,为肿瘤点,面积为所有肿瘤点的个数,周长为肿瘤边界点的个数,肿瘤边界点分为两种第一种为图像上的边界点,第二种为该肿瘤点上下左右至少有一个不是肿瘤点则该肿瘤点为边界点
second,我们在输入时首当其冲的就会将肿瘤点面积算出来,当我们在考虑算周长时换一种思想周长和面积为包含关系则再求周长时(考虑这句话"该肿瘤点上下左右至少有一个不是肿瘤点则该肿瘤点为边界点"->"该肿瘤点上下左右都是肿瘤点那该肿瘤点不是边界点则从面积中移除"),想到这句话这题用吃奶的力就可以轻松解决
事列代码为:
#include<stdio.h>
int main(){
int i,j,N,x,y,s[105][105];
x=0;
scanf("%d",&N);
for(i=0;i<N;i++)
for(j=0;j<N;j++){
scanf("%d",&s[i][j]);
if(s[i][j]<=50) x++;
}
y=x;
for(i=1;i<N-1;i++)
for(j=1;j<N-1;j++){
if(s[i][j]<=50&&s[i-1][j]<=50&&s[i+1][j]<=50&&s[i][j-1]<=50&&s[i][j+1]<=50)
y--;
}
printf("%d %d\n",x,y);
return 0;}