时间:2021-07-01 10:21:17 帮助过:45人阅读
import java.util.Scanner; //有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 public class JieJin { public static void main(String args[]) { double[] l = new double[] { 1.1, 1
import java.util.Scanner;
//有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。
public class JieJin {
public static void main(String args[]) {
double[] l = new double[] { 1.1, 1.5, 1.6, 2.1, 2.2, 2.8, 3.8, 4.1 };
Scanner cin = new Scanner(System.in);
System.out.println("输入x:");
int x = cin.nextInt();
System.out.println("输入M:");
double M = cin.nextDouble();
double sum = 9999;
int start = 0;
for (int i = 0; i < l.length - 1; i++) {
if (sum(l, i, x, M) < sum) {
sum = sum(l, i, x, M);
start = i;
}
if (x + i >= l.length)
break;
}
System.out.println(start);
}
private static double sum(double[] l, int i, int x, double M) {
double sum = 0;
for (int k = 0; k < x; k++) {
sum = sum + chazhi(l[i], M);
i++;
if (i >= l.length)
break;
}
return sum;
}
private static double chazhi(double a, double b) {
if (a - b > 0)
return a - b;
else
return b - a;
}
}