201912-2 回收站选址
略微难得模拟题,千万不能用二维数组来保存站点地址,否则会空间炸。
刚开始觉得使用这么多次递归会炸掉,后来发现,n最大也就是103,时间绰绰有余
#include<bits/stdc++.h> #include<vector> using namespace std; struct node{ int x,y; }; vector<node> v; bool isTrash(int x,int y){ for(int i=0;i<v.size();i++){ if(v[i].x==x&&v[i].y==y){ return true; } } return false; } bool isStation(node n){ if(isTrash(n.x-1,n.y)&&isTrash(n.x+1,n.y)&&isTrash(n.x,n.y-1)&&isTrash(n.x,n.y+1)){ return true; } return false; } int main() { int score[5]={0}; int n; cin>>n; for(int i=0;i<n;i++){ node p; cin>>p.x>>p.y; v.push_back(p); } int count=0; for(int i=0;i<n;i++){ if(isStation(v[i])){ if(isTrash(v[i].x-1,v[i].y-1)){ count++; } if(isTrash(v[i].x+1,v[i].y+1)){ count++; } if(isTrash(v[i].x+1,v[i].y-1)){ count++; } if(isTrash(v[i].x-1,v[i].y+1)){ count++; } score[count]++; count=0; } } for(int i=0;i<5;i++){ cout<<score[i]<<endl; } return 0; }

浙公网安备 33010602011771号