#include <iostream>
using namespace std;
struct info
{
int a;
int b;
int flag;
int score;
};
int main()
{
int n;
int a,b;
int arr[5]={0};
const int num=1000;
info in[num];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a>>b;
in[i].a=a;
in[i].b=b;
in[i].flag=0;
in[i].score=0;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
//判断是否为选址
if(in[i].a==in[j].a&&in[i].b==(in[j].b+1))
{
in[i].flag+=1;
}
if(in[i].a==in[j].a&&in[i].b==(in[j].b-1))
{
in[i].flag+=1;
}
if(in[i].b==in[j].b&&in[i].a==(in[j].a+1))
{
in[i].flag+=1;
}
if(in[i].b==in[j].b&&in[i].a==(in[j].a-1))
{
in[i].flag+=1;
}
//假设在为选址的前提下,计算得分为多少
if(in[i].a==(in[j].a+1)&&in[i].b==(in[j].b+1))
{
in[i].score+=1;
}
if(in[i].a==(in[j].a+1)&&in[i].b==(in[j].b-1))
{
in[i].score+=1;
}
if(in[i].a==(in[j].a-1)&&in[i].b==(in[j].b+1))
{
in[i].score+=1;
}
if(in[i].a==(in[j].a-1)&&in[i].b==(in[j].b-1))
{
in[i].score+=1;
}
}
}
for(int i=0;i<n;i++)
{
if(in[i].flag==4)
{
int index;
index=in[i].score;
arr[index]+=1;
}
}
for(int i=0;i<5;i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
**
总结:
对于有条件的个数统计题,可以把他的条件存储下来,满足该条件则数组加一。
例如这题,需要统计不同得分的垃圾选址的个数,那就先把垃圾地的得分先存下来,在循环里,在满足条件的情况下,把得分作为他的下标,该下标下的元素加1达到统计的目的。
**