• PAT乙级题库“傻瓜”题解之射击比赛


    本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。

    输入格式:

    输入在第一行中给出一个正整数 N(≤ 10 000)。随后 N 行,每行按下列格式给出:

    ID x y
    

    其中 ID 是运动员的编号(由 4 位数字组成);xy 是其打出的弹洞的平面坐标(x,y),均为整数,且 0 ≤ |x|, |y| ≤ 100。题目保证每个运动员的编号不重复,且每人只打 1 枪。

    输出格式:

    输出冠军和菜鸟的编号,中间空 1 格。题目保证他们是唯一的。

    输入样例:

    3
    0001 5 7
    1020 -1 3
    0233 0 -1
    

    输出样例:

    0233 0001
     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int main()
     5 {
     6     int n;
     7     cin>>n;
     8     struct numbs{
     9         string ID;
    10         int x;
    11         int y;
    12         int flag;
    13     };
    14     numbs numbers[n];
    15 
    16     for(int i=0;i<n;i++)
    17     {
    18         cin>>numbers[i].ID>>numbers[i].x>>numbers[i].y;
    19         numbers[i].flag=numbers[i].x*numbers[i].x+numbers[i].y*numbers[i].y;
    20     }
    21     numbs max,min;
    22     max=numbers[0];
    23     min=numbers[0];
    24     for(int i=0;i<n;i++)
    25     {
    26         if(numbers[i].flag>max.flag) max=numbers[i];
    27         if(numbers[i].flag<min.flag) min=numbers[i];
    28     }
    29     cout<<numbers[n-1].ID<<" "<<numbers[0].ID;
    30     return 0;
    31 }

    这道题如果最后用冒泡来排查赢家和菜鸟,会运行超时。

  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    第一次作业
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/solititude/p/11870399.html
Copyright © 2020-2023  润新知