一、题目描述
二、代码实现
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
//构造结构体存放每一个点
struct Node{
long long x;
long long y;
};
Node node[1005];
//判断点(x,y)是否有垃圾
bool trash(long long x,long long y,int n)
{
for(int i=0;i<n;i++)
{
if(node[i].x == x && node[i].y == y) return true;
}
return false;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>node[i].x>>node[i].y;
}
int num[5]={0};
int dir[4][2] = {{1,1},{-1,-1},{1,-1},{-1,1}};
for(int i=0;i<n;i++)
{
long long tx = node[i].x;
long long ty = node[i].y;
//第一个条件:(x,y)处要有垃圾
if(trash(tx,ty,n))
{
//第二个条件:(x,y)的上下左右要有垃圾
if(trash(tx+1,ty,n) && trash(tx-1,ty,n) && trash(tx,ty+1,n) && trash(tx,ty-1,n))
{
//开始统计得分情况
int temp = 0;
for(int j=0;j<4;j++)
{
if(trash(tx+dir[j][0],ty+dir[j][1],n)) temp++;
}
num[temp]++;
}
}
}
for(int i=0;i<5;i++)
{
cout<<num[i]<<endl;
}
return 0;
}