201912-2 回收站寻址
纯暴力,生怕超时。。。
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int n;
bool isFind(vector<vector<int>> a, int x, int y) {
vector<int> t = { x,y };
vector<vector<int>>::iterator iter = find(a.begin(), a.end(), t);
if (iter != a.end()) return true;
return false;
}
int main()
{
int score[5] = { 0 };
vector<vector<int>> a;
vector<vector<int>> b;
cin >> n;
for (int i = 0; i < n; i++) {
int t1, t2;
cin >> t1 >> t2;
vector<int> t;
t.push_back(t1);
t.push_back(t2);
a.push_back(t);
}
for (int i = 0; i < n; i++) {
int x = a[i][0], y = a[i][1], s = 0;
if (isFind(a, x + 1, y)) s++;
if (isFind(a, x - 1, y)) s++;
if (isFind(a, x , y+1)) s++;
if (isFind(a, x , y-1)) s++;
if (s == 4) b.push_back(a[i]);
}
for (int i = 0; i < b.size(); i++) {
int x = b[i][0], y = b[i][1], s = 0;
if (isFind(a, x + 1, y+1)) s++;
if (isFind(a, x - 1, y+1)) s++;
if (isFind(a, x+1, y - 1)) s++;
if (isFind(a, x-1, y - 1)) s++;
score[s]++;
}
for (int i = 0; i < 5; i++) cout << score[i] << endl;
return 0;
}