大体思路:用pair把每个坐标给存起来,然后再用map<pair<int,int>,int>给每个坐标赋一个初值,表示此坐标存在垃圾。然后就根据提示做就行啦~
C++代码(100分):
#include<iostream>
#include<map>
#define N 1000
#define CN 4
using namespace std;
int main()
{
int n;
int i;
int x,y;
int count[CN+1]={0};
pair<int,int>p[N];
map<pair<int,int>,int>m;
cin>>n;
for(i=0;i<n;i++)
{
cin>>x>>y;
p[i]=make_pair(x,y);
m[p[i]]=1;
}
for(i=0;i<n;i++)
{
int a,b;
a=p[i].first;
b=p[i].second;
if(m[make_pair(a,b)]==1 && m[make_pair(a,b+1)] && m[make_pair(a,b-1)] && m[make_pair(a+1,b)] && m[make_pair(a-1,b)])
{
count[m[make_pair(a+1,b+1)]+m[make_pair(a+1,b-1)]+m[make_pair(a-1,b+1)]+m[make_pair(a-1,b-1)]]++;
}
}
for(i=0;i<=CN;i++)
{
cout<<count[i]<<endl;
}
return 0;
}
来源:CSDN
作者:AC_KING
链接:https://blog.csdn.net/qq_38230338/article/details/104591010