CSP第22次 202104-2 邻域均值 C语言满分答案
#include<stdio.h>
int main(){
int i,j,n,L,r,t,t1,t2,end=0;
int a,b,c,d;
int a1,b1,c1,d1;
float sum,num;
scanf("%d%d%d%d",&n,&L,&r,&t);
int s[n][n];
for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&s[i][j]);
for(i=0;i<n;i++){
j=0;sum=0;num=0;
a=i-r;if(a<0) a=0;
b=j-r;if(b<0) b=0;
c=i+r;if(c>=n) c=n-1;
d=j+r;if(d>=n) d=n-1;
for(t1=a;t1<c+1;t1++){
for(t2=b;t2<d+1;t2++){
sum+=s[t1][t2];
num++;
}
}
if(sum/num<=t) end++;
for(j=1;j<n;j++){
a1=i-r;if(a1<0) a1=0;
b1=j-r;if(b1<0) b1=0;
c1=i+r;if(c1>=n) c1=n-1;
d1=j+r;if(d1>=n) d1=n-1;
if(b1!=b){
for(t1=a;t1<c+1;t1++){
sum-=s[t1][b];
num--;
}
}
if(d1!=d){
for(t1=c;t1>=a;t1--){
sum+=s[t1][d1];
num++;
}
}
if(sum/num<=t) end++;
a=a1;b=b1;c=c1;d=d1;
}
}
printf("%d",end);
return 0;
}