解题思路
这道题的思路是,所有的点最终都在[i,i+17]的区间中。
所以我们要枚举所有的区间,来算出所花费的最小金额。
相关代码
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int a[] = new int[N];
for(int i=0;i<N;i++){
a[i] = scan.nextInt();
}
Arrays.sort(a);
int res=99999999;
for(int i=0;i<=83;i++){
int l = i,r = i+17,sum=0;
for(int j=0;j<N;j++) {
if (r < a[j]) {
sum = (int) (sum + Math.pow(Math.abs(a[j] - r), 2));
} else if (a[j] < l) {
sum = (int) (sum + Math.pow(Math.abs(a[j] - l), 2));
}
}
res = Math.min(res,sum);
}
System.out.println(res);
}
}