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]); } } } }
用了普通数组,依然超时,无法理解
勿在浮沙筑高台

浙公网安备 33010602011771号