前言
你好啊,我是努力奔跑的追梦人~我始终相信着未来,一分耕耘一分收获。
提示:以下是本篇文章正文内容,所有题解均使用 C/C++ 编程语言。
#include <bits/stdc++.h>
using namespace std;
//使用 set 高效查找
struct Point{
int x, y;
Point(int _x, int _y):x(_x), y(_y){}
bool operator < (const Point &rhs) const{
if(x == rhs.x) return y<rhs.y;
return x < rhs.x;
}
};
int n;
set<Point> pts;//垃圾的地址
int score[5];//回收站选址的得分
bool find(int x, int y){
//find():若找到,返回该键值迭代器的位置,否则返回最后一个元素后面一个位置。
//找到了
if (pts.find(Point(x, y)) != pts.end())
return true;
return false;
}
int main(){
freopen("1.txt", "r", stdin);
cin >> n;
int x, y;
for (int i=0; i<n; i++){
cin >> x >> y;
pts.insert(Point(x, y));
}
set<Point>::iterator it;
for (it=pts.begin(); it != pts.end(); it++){
x=(*it).x;
y=(*it).y;
if (find(x, y+1) && find(x, y-1) && find(x-1, y) && find(x+1, y)){
int cnt=0;
if (find(x-1, y-1)) cnt++;
if (find(x-1, y+1)) cnt++;
if (find(x+1, y-1)) cnt++;
if (find(x+1, y+1)) cnt++;
score[cnt]++;
}
}
for (int i=0; i<5; i++)
cout << score[i] << endl;
return 0;
}