找某集合中任意元素之和最接近于一指定值的所有的元素的算法
如:集合{90, 200, 300, 400, 530} 指定数值:650
那么元素之和最接近650的元素是90和530, 因为90 + 530 = 620 最接近650
最好用java实现,谢谢。
如:集合{90, 200, 300, 400, 530} 指定数值:650
那么元素之和最接近650的元素是90和530, 因为90 + 530 = 620 最接近650
最好用java实现,谢谢。
public class test {
public static void main(String[] args) {
int result = 0;
int r = Integer.MAX_VALUE;
int[] a = {90, 200, 300, 400, 530};
int l=0,m=0;
if(a.length<2){return;}
for(int i = 0; i<a.length; i++){
for(int j = i+1; j<a.length; j++){
int tmp = a[i]+a[j];
int r1 = 650-tmp;
if(r1<0){r1 = 0-r1;}
else if(r1==0){
l=i;m=j;
result = tmp;
break;
}
if(r>r1){
l=i;m=j;
r = 650-tmp;
result = tmp;
}
}
}
System.out.println(""+l+" "+m+" "+result);
}
//file:test.java
public class test {
public static void main(String[] args) {
int result = 0;
int r = Integer.MAX_VALUE;
int[] a = {90, 200, 300, 400, 530};
int l=0,m=0;
if(a.length<2){return;}
l: for(int i = 0; i<a.length; i++){
for(int j = i+1; j<a.length; j++){
int tmp = a[i]+a[j];
int r1 = 650-tmp;
if(r1<0){r1 = 0-r1;}
else if(r1==0){
l=i;m=j;
result = tmp;
break l;
}
if(r>r1){
l=i;m=j;
r = 650-tmp;
result = tmp;
}
}
}
System.out.println(""+l+" "+m+" "+result);
}
}