CCF-201912-2-回收站选址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这道题没有什么思路可以,要注意的一点就是要用long long,代码如下:

#include<iostream>
using namespace std;

int n;
int a=0,b=0,c=0,dd=0,e=0;//代表得分01234,dd主要是结构体用了d,当时就果断把这里改成dd,毕竟那个d下面if用的太多
int v;
int sum;

struct d
{
	long long int x;
	long long int y;
}d[10000];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>d[i].x>>d[i].y;
	}
	for(int i=1;i<=n;i++)
	{
		v=0;sum=0;//v==4则代表为回收址,sum代表评分
		for(int j=1;j<=n;j++)
		{
			if(i==j) continue;
			//四个if上下左右
			if(d[i].x+1==d[j].x&&d[i].y==d[j].y)
			{
				v++;
			}
			if(d[i].x-1==d[j].x&&d[i].y==d[j].y)
			{
				v++;
			}
			if(d[i].y+1==d[j].y&&d[i].x==d[j].x)
			{
				v++;
			}
			if(d[i].y-1==d[j].y&&d[i].x==d[j].x)
			{
				v++;
			}
			//四个if对角线
			if(d[i].x+1==d[j].x&&d[i].y+1==d[j].y)
			{
				sum++;
			}
			if(d[i].x-1==d[j].x&&d[i].y-1==d[j].y)
			{
				sum++;
			}
			if(d[i].y+1==d[j].y&&d[i].x-1==d[j].x)
			{
				sum++;
			}
			if(d[i].y-1==d[j].y&&d[i].x+1==d[j].x)
			{
				sum++;
			}
		}
		if(v==4)//v==4满足选址,数量++
		{
			if(sum==0)a++;
			if(sum==1)b++;
			if(sum==2)c++;
			if(sum==3)dd++;
			if(sum==4)e++;
		}
	}
	//输出
	cout<<a<<endl;
	cout<<b<<endl;
	cout<<c<<endl;
	cout<<dd<<endl;
	cout<<e<<endl;
	return 0;
}
发布了28 篇原创文章 · 获赞 40 · 访问量 3457

猜你喜欢

转载自blog.csdn.net/weixin_43912621/article/details/104207443