1082

超时,扣7分

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Scanner sc=new Scanner(System.in);
        int n=Integer.parseInt(sc.nextLine());
        String[][] player=new String[n][3];
        //输入信息
        for (int i=0;i<n;i++){
            player[i][0]=sc.next();
            player[i][1]=sc.next();
            player[i][2]=sc.nextLine();
        }

        //计算最小距离
        double min=Math.sqrt(Double.parseDouble(player[0][1])*Double.parseDouble(player[0][1])+Double.parseDouble(player[0][2])*Double.parseDouble(player[0][2]));
        for (int i=0;i<n;i++){
            if (min>Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]))){
                min=Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]));
            }else{
                min=min;
            }
        }
        for (int i=0;i<n;i++){
            if (min==Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]))){
                System.out.print(player[i][0]+" ");
            }
        }
        //计算最大距离
        double max=0;
        for (int i=0;i<n;i++){
            if (max<Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]))){
                max=Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]));
            }
        }
        for (int i=0;i<n;i++){
            if (max==Math.sqrt(Double.parseDouble(player[i][1])*Double.parseDouble(player[i][1])+Double.parseDouble(player[i][2])*Double.parseDouble(player[i][2]))){
                System.out.print(player[i][0]);
            }
        }
    }
}

想办法优化下,多维数组可能速度慢。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Scanner sc=new Scanner(System.in);
        int n=Integer.parseInt(sc.nextLine());
        String[] name=new String[n];
        double[] x=new double[n];
        double[] y=new double[n];
        double[] l=new double[n];
        //输入信息
        for (int i=0;i<n;i++){
            name[i]=sc.next();
            x[i]=sc.nextDouble();
            y[i]=Double.parseDouble(sc.nextLine());
        }

        //求距离
        for (int i=0;i<n;i++){
            l[i]=Math.sqrt(x[i]*x[i]+y[i]*y[i]);
        }
        //求最小值
        double min=l[0];
        for (int i=0;i<n;i++){
            if (min>l[i]){
                    min=l[i];
            }else{
                min=min;
            }
        }
        for (int i=0;i<n;i++){
            if (min==l[i]){
                System.out.print(name[i]+" ");
            }
        }
        //求最大值
        double max=l[0];
        for (int i=0;i<n;i++){
            if (max<l[i]){
                max=l[i];
            }else{
                max=max;
            }
        }
        for (int i=0;i<n;i++){
            if (max==l[i]){
                System.out.print(name[i]);
            }
        }
    }
}

用了普通数组,依然超时,无法理解

posted @ 2018-10-09 17:08  博客园机器人  阅读(477)  评论(0)    收藏  举报