回收站选址(100分)

这个我用类和函数写的,用的东西比较简单,但是写起来略有点麻烦,有点长。不过这几个函数大同小异,粘贴就可以。一开始理解错了题意,以为是输出的是每个点的上下左右每个记一分。其实是要确定回收站后,再看左上左下右上右下的四个点的得分 。
回收站选址(100分)_第1张图片
回收站选址(100分)_第2张图片

#include  
using namespace std;
class Point{
     
	public:
		int x;
		int y;

	void input();
};
void Point::input(){
     
	cin>>x>>y;
}
const int NUM=1001;
Point pot[NUM];
int T[5]={
     0};
int main()
{
       int n,t1,t2,t3,t4,t;
   int a1,a2,a3,a4,a;
   cin>>n;
int shang(Point p1,Point p[],int n);
int xia(Point p1,Point p[],int n);
int zuo(Point p1,Point p[],int n);
int you(Point p1,Point p[],int n);
int zuoshang(Point p1,Point p[],int n);
int zuoxia(Point p1,Point p[],int n);
int youshang(Point p1,Point p[],int n);
int youxia(Point p1,Point p[],int n);
for(int i=0; i<n; i++)
   pot[i].input();

for(int i=0; i<n; i++)
{
     
	 t1=shang(pot[i],pot,n);
	 t2=xia(pot[i],pot,n);
	 t3=zuo(pot[i],pot,n);
	 t4=you(pot[i],pot,n);
	 t=t1+t2+t3+t4;
	 if(t==4){
     
	  a1=zuoshang(pot[i],pot,n);
	  a2=zuoxia(pot[i],pot,n);
	  a3=youshang(pot[i],pot,n);
	  a4=youxia(pot[i],pot,n);
	  a=a1+a2+a3+a4;
	 }else continue;
	  switch(a)
	  {
     
	  	case 0:T[0]++;break;
	  	case 1:T[1]++;break;
	  	case 2:T[2]++;break;
	  	case 3:T[3]++;break;
	  	case 4:T[4]++;break;
	  	default :break;
	  }

}
for(int i=0; i<5; i++)
   cout<<T[i]<<endl;

     return 0;

}
int shang(Point p1,Point p[],int n)
{
        int c=0;
	p1.y=p1.y+1;
for(int i=0; i<n; i++)
	  
    if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;
    return c;
	 	 	   	 
}
int xia(Point p1,Point p[],int n)
  {
       int c=0;
	 p1.y=p1.y-1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;   
	return c;	 	   	 
}
int zuo(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x+1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;  
	 return c;	 	   	 
}
int you(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x-1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;   
	return c;	 	   	 
}
int zuoshang(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x-1;
	p1.y=p1.y+1;
	for(int i=0; i<n; i++)
	  if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;
	return c;	  
	   	 
}
 int zuoxia(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x-1;
	p1.y=p1.y-1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++; 
     return c;	 	   	 
}
int youshang(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x+1;
	p1.y=p1.y+1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;   
	return c;	 	   	 
}
int youxia(Point p1,Point p[],int n)
{
        int c=0;
	p1.x=p1.x+1;
	p1.y=p1.y-1;
	for(int i=0; i<n; i++)
	   if((p1.x==p[i].x)&&(p1.y==p[i].y))c++;  
	return c;	 	   	 
}

在这里插入图片描述
我要去观摩一下那些大佬的优秀答案 嘻嘻(●’◡’●)

你可能感兴趣的:(回收站选址(100分))