没什么可说的 直接暴力n3,当然也可以排序完之后把它优化一下这样更好。
if前两项的和小于第三项就直接结束第二重循环。
import java.util.*;
import java.math.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
public class Main {
public static void main(String args[])throws IOException {
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int n = (int) in.nval;
long num[] = new long[n];
for(int i=0;i<n;i++)
{
in.nextToken();
num[i] = (long) in.nval;
}
boolean dui = false;
long sum = 0;
Arrays.sort(num);
yi:for(int i=0;i<n-2;i++)
{
er:for(int k=i+1;k<n-1;k++)
{
for(int j=k+1;j<n;j++)
{
if(num[i]+num[k]<num[j])
{
break er;
}
if(check(num[i],num[k],num[j])==true)
{
out.print(num[i]+" "+num[k]+" "+num[j]);
dui = true;;
break yi;
}
}
}
}
if(dui==false)
out.print("No solution");
out.flush();
}
public static boolean check(long x,long y,long z)
{
if(x+y>z&&x+z>y&&y+z>x)
return true;
else
return false;
}
} 
京公网安备 11010502036488号