CCF-CSP真题201912-2《回收站选址》

各位友友们可以看看是什么问题吗?为啥只有50分。。。

题目:

CCF-CSP真题201912-2《回收站选址》_第1张图片

CCF-CSP真题201912-2《回收站选址》_第2张图片

CCF-CSP真题201912-2《回收站选址》_第3张图片

C语言解答:

#include 
#define M 10000
int x[M],y[M];
int f[M][M]={0},s[M][M]={100};
int main(){
	int n,i,a,b,c,d;
	int count0=0,count1=0,count2=0,count3=0,count4=0;
	scanf("%d",&n);
	
	for(i=1;i<=n;i++){
		scanf("%d%d",&x[i],&y[i]);
		f[x[i]][y[i]]=1;//对所有坐标做标记 
		
	}
	

	for(i=1;i<=n;i++){
		a=x[i]+1;
		b=x[i]-1;
		c=y[i]+1;
		d=y[i]-1;
		
		
		
		//如果坐标xy上下左右都有垃圾,则看四个对角位置是否有垃圾 
		if(f[x[i]][c]==1&&f[x[i]][d]==1&&f[a][y[i]]==1&&f[b][y[i]]==1){
			s[x[i]][y[i]]=0;
			if(f[a][c]==1){
				s[x[i]][y[i]]++;
			}
			if(f[a][d]==1){
				s[x[i]][y[i]]++;
			}
			if(f[b][c]==1){
				s[x[i]][y[i]]++;
			}
			if(f[b][d]==1){
				s[x[i]][y[i]]++;
			}
			//坐标xy的四个对角位置有垃圾有垃圾的数量 
			if(s[x[i]][y[i]]==0){
			count0++;
			}
			if(s[x[i]][y[i]]==1){
				count1++;
			}
			if(s[x[i]][y[i]]==2){
				count2++;
			}
			if(s[x[i]][y[i]]==3){
				count3++;
			}
			if(s[x[i]][y[i]]==4){
				count4++;
			}
		}
		
		
	}
	printf("%d\n%d\n%d\n%d\n%d\n",count0,count1,count2,count3,count4);
	
	
	
	return 0;
} 

运行结果:

abbdf2b970fa4db888109b4deb850320.png

 

你可能感兴趣的:(c语言,算法,c++)