第二题一般都是这种类型,要善于总结这种题的解题方法。
思路
这种题目主要考察的是对与给定实体进行描述的能力,一般可用结构体来描述。
**
这种题目尽量用作简单的代码写,不要追求骚操作,一步一步扎实的写下去。下面的代码可能有点长,但很容易理解(毕竟使用最简单方法写的).
下面代码把头文件换了就可以用c编辑了
#include <iostream>
using namespace std;
const long long max1=200000000;
struct lajitong//垃圾桶
{
int x;//横坐标
int y;//纵坐标
int point;//评分
bool yes;//判断有没有成为垃圾桶资格
};
int main(int argc, char** argv) {
int n;
cin>>n;
lajitong tong[n];
for(int i=0;i<n;i++)
{
cin>>tong[i].x>>tong[i].y;
tong[i].point=0;//初始化
tong[i].yes=false;//初始化
}
for(int i=0;i<n;i++)
{
int s=0;//若上下左右都有垃圾
for(int j=0;j<n;j++)
{
if(j==i)//去掉i==j 不写也无所谓哦效率高点而已
{
continue;
}
if(tong[i].x-1==tong[j].x&&tong[i].y==tong[j].y)
{
s++;
}
if(tong[i].x+1==tong[j].x&&tong[i].y==tong[j].y)
{
s++;
}
if(tong[i].x==tong[j].x&&tong[i].y-1==tong[j].y)
{
s++;
}
if(tong[i].x==tong[j].x&&tong[i].y+1==tong[j].y)
{
s++;
}
if(s==4)//若4个条件都满足
{
tong[i].yes=true;//成为垃圾桶
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(j==i)
{
continue;
}
if(tong[i].yes)
{
if(tong[i].x-1==tong[j].x&&tong[i].y-1==tong[j].y)
{
tong[i].point++;
}
if(tong[i].x+1==tong[j].x&&tong[i].y+1==tong[j].y)
{
tong[i].point++;
}
if(tong[i].x-1==tong[j].x&&tong[i].y+1==tong[j].y)
{
tong[i].point++;
}
if(tong[i].x+1==tong[j].x&&tong[i].y-1==tong[j].y)
{
tong[i].point++;
}
}
}
}
int x[5]={
0};
for(int i=0;i<n;i++)
{
if(tong[i].yes)
x[tong[i].point]++;
}
for(int i=0;i<5;i++)
{
cout<<x[i]<<endl;
}
return 0;
}
有什么问题可以留在评论区里!!!
谢谢。