0
已采纳
禄子墨
初级守护
初级守护
你好
首先,这道题先用一个bool型桶二维数组,来标记这个点是否被标记到。然后遍历每个点,通过两点之间公式sqrt(pow(abs(k - x), 2) + pow( abs(j - y), 2)),其中,k是遍历的x下标,x是输入的x下标;j是遍历的y下标,y是输入的y下标。通过这个判断是否小于探测半径,如果小于,则这个点赋值为true。最后重新遍历整个数组,定义cnt,每遇到为true的点cnt++,最后输出cnt。
求采纳,谢谢
0
0
李秉轩
修练者
修练者
int x[105],y[105];
bool num[105][105];
int n,m,r,cnt=0;
cin>>n>>m>>r;
for(int i=1;i<=m;i++){
cin>>x[i]>>y[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++){
double dis=sqrt((i-x[k])*(i-x[k])+(j-y[k])*(j-y[k]));
if(dis<=r){
num[i][j]=true;
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(num[i][j]){
cnt++;
}
}
}
cout<<cnt;
0