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

一、题目描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码实现

#include<iostream>
#include<bits/stdc++.h>
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历年认证考试真题解答汇总

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/112970834