CCF 201912-2 回收站选址(C++)

人走茶凉 提交于 2020-03-01 14:39:57

大体思路:用pair把每个坐标给存起来,然后再用map<pair<int,int>,int>给每个坐标赋一个初值,表示此坐标存在垃圾。然后就根据提示做就行啦~

C++代码(100分):

#include<iostream>
#include<map>
#define N 1000
#define CN 4
using namespace std;

int main()
{
    int n;
    int i;
    int x,y;
    int count[CN+1]={0};
    pair<int,int>p[N];
    map<pair<int,int>,int>m;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>x>>y;
        p[i]=make_pair(x,y);
        m[p[i]]=1;
    }

    for(i=0;i<n;i++)
    {
        int a,b;
        a=p[i].first;
        b=p[i].second;

        if(m[make_pair(a,b)]==1 && m[make_pair(a,b+1)] && m[make_pair(a,b-1)] && m[make_pair(a+1,b)] && m[make_pair(a-1,b)])
        {
            count[m[make_pair(a+1,b+1)]+m[make_pair(a+1,b-1)]+m[make_pair(a-1,b+1)]+m[make_pair(a-1,b-1)]]++;
        }
    }

    for(i=0;i<=CN;i++)
    {
        cout<<count[i]<<endl;
    }
    return 0;
}


    
    
 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!