该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
public class Min { public static void main(String[] args) {
double[] ary = { 50.9, 5, -6, 3, -100, 6 };
double[] minAry = min(ary, 0);
System.out.println(minAry[0] + " , " + minAry[1]);
minAry = min(ary, 100);
System.out.println(minAry[0] + " , " + minAry[1]);
} public static double[] min(double[] ary, double num) {
double[] minAry = ary;
for (int i = 0; i < ary.length; i++) {
for (int j = 1; j < ary.length - i; j++) {
double[] newSub = subArray(ary, i, j);
if(Math.abs(sumAry(newSub) - num) < Math.abs(sumAry(minAry) - num)) {
minAry = newSub;
}
}
}
return minAry;
}
public static double[] subArray(double[] ary, int start, int length) {
double[] reAry = new double[length];
for (int i = 0; i < reAry.length; i++) {
reAry[i] = ary[i + start];
}
return reAry;
}
public static double sumAry(double[] ary) {
double sum = 0;
for (int i = 0; i < ary.length; i++) {
sum += ary[i];
}
return sum;
}
}