这道题没有什么思路可以,要注意的一点就是要用long long,代码如下:
#include<iostream>
using namespace std;
int n;
int a=0,b=0,c=0,dd=0,e=0;//代表得分01234,dd主要是结构体用了d,当时就果断把这里改成dd,毕竟那个d下面if用的太多
int v;
int sum;
struct d
{
long long int x;
long long int y;
}d[10000];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>d[i].x>>d[i].y;
}
for(int i=1;i<=n;i++)
{
v=0;sum=0;//v==4则代表为回收址,sum代表评分
for(int j=1;j<=n;j++)
{
if(i==j) continue;
//四个if上下左右
if(d[i].x+1==d[j].x&&d[i].y==d[j].y)
{
v++;
}
if(d[i].x-1==d[j].x&&d[i].y==d[j].y)
{
v++;
}
if(d[i].y+1==d[j].y&&d[i].x==d[j].x)
{
v++;
}
if(d[i].y-1==d[j].y&&d[i].x==d[j].x)
{
v++;
}
//四个if对角线
if(d[i].x+1==d[j].x&&d[i].y+1==d[j].y)
{
sum++;
}
if(d[i].x-1==d[j].x&&d[i].y-1==d[j].y)
{
sum++;
}
if(d[i].y+1==d[j].y&&d[i].x-1==d[j].x)
{
sum++;
}
if(d[i].y-1==d[j].y&&d[i].x+1==d[j].x)
{
sum++;
}
}
if(v==4)//v==4满足选址,数量++
{
if(sum==0)a++;
if(sum==1)b++;
if(sum==2)c++;
if(sum==3)dd++;
if(sum==4)e++;
}
}
//输出
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<dd<<endl;
cout<<e<<endl;
return 0;
}