CCF小白刷题之路---201912-2 回收站选址(C/C++ 100分)

一、题目描述

CCF小白刷题之路---201912-2 回收站选址(C/C++ 100分)_第1张图片
CCF小白刷题之路---201912-2 回收站选址(C/C++ 100分)_第2张图片
CCF小白刷题之路---201912-2 回收站选址(C/C++ 100分)_第3张图片

二、代码实现

#include
#include
using namespace std;
//构造结构体存放每一个点
struct Node{
     
    long long x;
    long long y;
};

Node node[1005];
//判断点(x,y)是否有垃圾
bool trash(long long x,long long y,int n)
{
     
    for(int i=0;i<n;i++)
    {
     
        if(node[i].x == x && node[i].y == y) return true;
    }
    return false;
}

int main()
{
     
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
     
        cin>>node[i].x>>node[i].y;
    }
    int num[5]={
     0};
    int dir[4][2] = {
     {
     1,1},{
     -1,-1},{
     1,-1},{
     -1,1}};
    for(int i=0;i<n;i++)
    {
     
        long long tx = node[i].x;
        long long ty = node[i].y;
        //第一个条件:(x,y)处要有垃圾
        if(trash(tx,ty,n))
        {
     
            //第二个条件:(x,y)的上下左右要有垃圾
            if(trash(tx+1,ty,n) && trash(tx-1,ty,n) && trash(tx,ty+1,n) && trash(tx,ty-1,n))
            {
     
                //开始统计得分情况
                int temp = 0;
                for(int j=0;j<4;j++)
                {
     
                    if(trash(tx+dir[j][0],ty+dir[j][1],n)) temp++;
                }
                num[temp]++;
            }
        }
    }
    for(int i=0;i<5;i++)
    {
     
        cout<<num[i]<<endl;
    }
    return 0;
}

更多CCFCSP认证真题详解,请点击>>CCFCSP历年认证考试真题解答汇总

你可能感兴趣的:(ccf,CCFCSP认证,回收站选址,C/C++)