日期:2014-05-20  浏览次数:20983 次

找某集合中任意元素之和最接近于一指定值的所有的元素的算法
找某集合中任意元素之和最接近于一指定值的所有的元素的算法
如:集合{90,   200,   300,   400,   530}     指定数值:650
    那么元素之和最接近650的元素是90和530,   因为90   +   530   =   620   最接近650    
最好用java实现,谢谢。

------解决方案--------------------
//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;}
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);
}