(暴力枚举)
读入所有山峰高度并排序
最优的最小山峰高度一定在[读入的最小山峰高度,读入的最大山峰高度 - 17]之间
依次假设[读入的最小山峰高度,读入的最大山峰高度 - 17]中的每一个高度为最优解对应的最小山峰高度
求出每个假设需要花费的金额,求出最小的花费
Java 代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
//读入所有山峰高度到一个Arraylist中
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.adLine());
ArrayList list = new ArrayList();
for (int i = 0; i < n; i++) {
list.add(Integer.adLine()));
}
//排序山峰高度
Collections.sort(list);
//ans用来存每次枚举的最小值,sum用来存每次枚举的花费
int ans = Integer.MAX_VALUE;
//依次假设[读入的最小山峰高度,读入的最大山峰高度 - 17]中的每一个高度为最优解对应的最小山峰高度
for (int i = (0); i <= (n - 1) - 17; i++) {
int sum = 0;
for (int num : list){
if (num < i) sum += (i - num) * (i - num);
if (num > (i + 17)) sum += (num - i - 17) * (num - i - 17);
}
ans = Math.min(ans, sum);
}
System.out.println(ans);
}
}
本文发布于:2024-01-28 18:33:19,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064380029420.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |