package sougou;
import java.util.Scanner;
/**
* [@author](/user/author) liugl
* [@date](/user/date) 2017年9月8日 下午4:32:50
**/
public class sogouOne {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int N = sc.nextInt();
double [] arr=new double[N];
int i = 0;
while(sc.hasNextLine()&&i<N){
arr[i] = sc.nextDouble();
i++;
}
int j,k;double max = 0,m;
for(j=1;j<=arr.length-1;j++){
for(k=0;k<j;k++){
m = arr[j]-arr[k];
if(m<0){
return;
}
if(m>180){
m = 360-m;
}
if(m>max){
max = m;
}
}
}
// System.out.println(max);
System.out.printf("%1$.8f",max);
}
}
你的代码好复杂啊, 看不懂呀, 我的是50%。不知道少点什么。
//用scanner卡在百分之九十TLE bufferedreader一直runtime error //交卷了才发现bufferedreader用的有点问了 修改以后的代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String args[]) throws IOException { String str; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); while((str = bufferedReader.readLine() )!=null){ int n = Integer.parseInt(str); double a[] = new double[n]; for (int i=0; i<n; i++){ a[i] = Double.parseDouble(bufferedReader.readLine()); } double answer = 0; for (int i=0; i<n; ++i){ double fastMax = findA((a[i]+180)%360, a, 0, n-1, a[i]); double length = Math.abs(fastMax-a[i]); answer = Math.max(answer, length<180?length:360-length); } System.out.printf("%.8f\n", answer); } bufferedReader.close(); } public static double findA(double m, double a[], int be, int ed, double ans){ if(ed - be <= 1) { ans = getAns(m, ans, a[ed]); ans = getAns(m, ans, a[be]); return ans; } int mi = (be+ed)/2; if(a[mi] > m){ ans = findA(m, a, be, mi, ans); } else if(a[mi] < m){ ans = findA(m, a, mi, ed, ans); } else { ans = a[mi]; } return ans; } public static double getAns(double m, double ans, double ami){ if(Math.abs(m-ans) > Math.abs(m-ami)) return ami; else return ans; } }