2019-12 CCF-CSP 回收站选址 C和C++混写
前言
本次学习所用设备为微软Surface pro4
,操作系统为windows10
。
注意事项
(1)CFF-CSP考试提交一定要使用C++编译环境 。
题目
实现代码如下
#include<iostream>
#include<algorithm>
using namespace std;
int x[1005]; //存储输入坐标
int y[1005];
int x_register[1005]; //存储可用于做回收站的坐标
int y_register[1005];
int score[1005];
int main()
{
//完成第一行的输入
int n;
scanf("%d",&n);
//完成剩下行的输入,输入有垃圾的位置坐标
int i;
for(i = 1;i <= n;i++)
{
scanf("%d",&x[i]);
scanf("%d",&y[i]);
}
//找可以做回收站的坐标
int j;
int i_count = 0;
for(i = 1;i <= n;i++)
{
int x_left = x[i] - 1;
int x_right = x[i] + 1;
int y_up = y[i] + 1;
int y_down = y[i] - 1;
int number = 0;
for(j = 1;j <= n;j++)
{
if(x[i] == x[j])
{
if(y[j] == y_up || y[j] == y_down)
{
number++;
}
}
if(y[i] == y[j])
{
if(x[j] == x_left || x[j] == x_right)
{
number++;
}
}
}
if(number == 4)
{
x_register[i_count] = x[i];
y_register[i_count] = y[i];
i_count++;
}
}
//再对回收站坐标进行检索评分
int score_0 = 0;
int score_1 = 0;
int score_2 = 0;
int score_3 = 0;
int score_4 = 0;
for(i = 0;i < i_count;i++)
{
int x_left = x_register[i] - 1;
int x_right = x_register[i] + 1;
int y_up = y_register[i] + 1;
int y_down = y_register[i] - 1;
int score = 0;
for(j = 1;j <= n;j++)
{
if(x[j] == x_left)
{
if(y[j] == y_up || y[j] == y_down)
{
score++;
}
}
if(x[j] == x_right)
{
if(y[j] == y_up || y[j] == y_down)
{
score++;
}
}
}
if(score == 0)
{
score_0++;
}
else if(score == 1)
{
score_1++;
}
else if(score == 2)
{
score_2++;
}
else if(score == 3)
{
score_3++;
}
else if(score == 4)
{
score_4++;
}
}
printf("%d\n%d\n%d\n%d\n%d",score_0,score_1,score_2,score_3,score_4);
return 0;
}