当前位置: 代码迷 >> 综合 >> 第二十次ccf-csp认证 202009-1 检测点查询(100分)
  详细解决方案

第二十次ccf-csp认证 202009-1 检测点查询(100分)

热度:63   发布时间:2024-02-23 00:54:37.0

**题目背景:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//代码如下
#include<iostream>
using namespace std;int arr[2001]={
    0};
int dis[1001]={
    0}; 
int main(void)
{
    int n,x,y;scanf("%d%d%d",&n,&x,&y);for(int i=1;i<=n;i++){
    scanf("%d%d",&arr[i],&arr[i+1000]);}for(int i=1;i<=n;i++){
    dis[i]=(arr[i]-x)*(arr[i]-x)+(arr[i+1000]-y)*(arr[i+1000]-y);}for(int i=1;i<=3;i++)//要三个输出,所以循环三次 {
    int min=1000000;for(int j=1;j<=n;j++){
    if(min>dis[j])min=dis[j];}for(int k=1;k<=n;k++){
    if(dis[k]==min){
    printf("%d\n",k);//输出的是编号dis[k]=1000000;break;//退出当前循环 }	}	} return 0; 
}

题目分析:
1.分别将数据处理为距离,存放在数组中。
2.遍历三次距离数组,每次获取最小距离的大小,再输出其编号,并修改最小距离使其失效。

  相关解决方案