一、问题描述
二、解答
代码:
#include<iostream>
#include<map>
using namespace std;
struct rubbish{
int x;
int y;
}rub[1000];
int n;
void input(){
cin>>n;
for(int i=0;i<n;i++)
{
cin>>rub[i].x>>rub[i].y;
}
}
bool has(int p,int q){//判断该处是否有垃圾
//注意代码的简洁
int j=0;
for(int i=0;i<n;i++)
{
if(p==rub[i].x&&q==rub[i].y){
return true;
}
// else{
// j++;
// }
}
// if(j==n){
return false;
// }
}
map<int,int>mp;//使用map,一个分数对应一个个数
int main()
{
input();
int p,q;
for(int i=0;i<=4;i++)
{
mp[i]=0;
}
for(int i=0;i<n;i++)
{
p=rub[i].x;
q=rub[i].y;
int score=0;
if(has(p+1,q)&&has(p-1,q)&&has(p,q+1)&&has(p,q-1)){
if(has(p-1,q-1)){score++;
}
if(has(p-1,q+1)){score++;
}
if(has(p+1,q-1)){score++;
}
if(has(p+1,q+1)){score++;
}
if(score==0){mp[score]++;}
else if(score==1){mp[score]++;}
else if(score==2){mp[score]++;}
else if(score==3){mp[score]++;}
else if(score==4){mp[score]++;}
}
}
for(int i=0;i<=4;i++){
cout<<mp[i]<<endl;
}
return 0;
}