這道題沒有什麼思路可以,要注意的一點就是要用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;
}