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;
}

 

posted @ 2021-03-29 20:45  南理工学渣  阅读(69)  评论(0)    收藏  举报