问题标题: 酷町堂:2276 cover

0
0

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
我要回答