CCF-CSP试题201912-2回收站选址 暴力解法
题目地址:201912-2回收站选址
由于此题测试点9和10中坐标可以是负数,则用二维数组存储坐标不好操作,所以此题采用结构体存储坐标。
具体代码如下:
#includeusing namespace std; struct node{ int x,y; int grade=0; int flag=0; }; //判断是否满足垃圾点 bool Jude(node p,int x,int y) { if((p.x==x-1&&p.y==y)||(p.x==x+1&&p.y==y)||(p.x==x&&p.y==y+1)||(p.x==x&&p.y==y-1)) { return true; } else { return false; } } //得出分数,满足此条件则分数+1 bool GetSum(node p, int x ,int y) { if((p.x==x-1&&p.y==y-1)||(p.x==x+1&&p.y==y+1)||(p.x==x-1&&p.y==y+1)||(p.x==x+1&&p.y==y-1)) { return true; } else { return false; } } int main() { int n;cin>>n; node point[n+1]; for(int i=1;i<=n;i++) { cin>>point[i].x>>point[i].y; } for(int i=1;i<=n;i++) { int x=point[i].x; int y=point[i].y; for(int j=1;j<=n;j++) { if(Jude(point[j], x, y)) { point[i].flag+=1; } if(GetSum(point[j], x, y)) { point[i].grade+=1; } } } int sum[6]; for(int i=0;i<5;i++) { sum[i]=0; } for(int i=1;i<=n;i++) { if(point[i].flag==4) { sum[point[i].grade]++;//直接用point[i].grade作为分数 } } for(int i=0;i<5;i++) { cout<



