原题链接
思路
用map去存放垃圾的地址。垃圾的地址使用结构体表示
如果要用map存放自定义的结构类型,需要实现运算符的重载。
代码
#include <bits/stdc++.h>
using namespace std;
map<int,int>cnt;
struct node{
int x,y;
bool operator<(const node& a)const {
if(x!=a.x){
return x<a.x;
}else{
return y<a.y;
}
}
};
map<node,int> has;//
bool check(int x,int y){
if(has[node{x,y+1}]&&has[node{x,y-1}]&&has[node{x-1,y}]&&has[node{x+1,y}]){
return true;
} else{
return false;
}
}
void type(int x,int y){
int sum = has[node{x-1,y+1}]+has[node{x-1,y-1}]+has[node{x+1,y+1}]+has[node{x+1,y-1}];
cnt[sum]++;
}
int main(){
int n;
cin>>n;
int a,b;
vector<node> pos(n);
for(int i=0;i<n;i++){
cin>>a>>b;
has[node{a,b}] = 1;
pos.push_back(node{a,b});
}
for(int i=0;i<pos.size();i++){
int x = pos[i].x;
int y = pos[i].y;
if(check(x,y)){//判断是否符合条件
type(x,y);//判断是哪个类型
}
}
for(int i=0;i<=4;i++){
cout<<cnt[i]<<endl;
}
return 0;
}
来源:CSDN
作者:巧乐兹呀
链接:https://blog.csdn.net/jfwzy109127/article/details/104698371