【正经题解】无线网络发射器选址
2024-02-22 15:03:08
发布于:浙江
10阅读
0回复
0点赞
一道比较简单的模拟,唯一的难点是对于边界情况的处理
为了避免麻烦的边界情况,在输入时把 的坐标都加了
所以数组要多开两个 (上下左右分别多 ),多开一个 只能 两个点
#include<iostream>
using namespace std;
int x,y,d,n,maxm,num,sum=1,cross[170][170]; //多开2个20以免越界
int main()
{
cin>>d>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y;
cin>>cross[x+20][y+20];
}
for(int i=20;i<=148;i++)
for(int j=20;j<=148;j++)
{
for(int m=i-d;m<=i+d;m++)
for(int k=j-d;k<=j+d;k++) //四重循环。外重两个遍历交叉口的点,内层两个遍历每个点周围d范围内的公共场所数
num+=cross[m][k];
if(maxm==num) //和最大值比较。如果相等则次数+1,如果比最大值小则将次数变为1重计;
sum++;
else if(maxm<num)
sum=1;
maxm=max(maxm,num);
num=0;
}
cout<<sum<<" "<<maxm;
return 0;
}
这里空空如也
有帮助,赞一个