本文主要是介绍题目 1262: 邮局选址问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。街区中任意2 点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y1-y2|度量。
居民们希望在城市中选择建立邮局的最佳位置,使n个居民点到邮局的距离总和最小。
编程任务:
给定n 个居民点的位置,编程计算n 个居民点到邮局的距离总和的最小值。
代码:
package lanqiao;import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] x = new int[n];int[] y = new int[n];for(int i = 0;i < n;i ++){x[i] = sc.nextInt();y[i] = sc.nextInt();}int minx = Integer.MAX_VALUE;int miny = Integer.MAX_VALUE;for(int i = 0;i < n;i ++){int sumx = 0;int sumy = 0;int d = x[i];int f = y[i];for(int j = 0;j < n;j ++){sumx = sumx + Math.abs(d - x[j]);sumy = sumy + Math.abs(f - y[j]);}if(sumx < minx){minx = sumx;}if(sumy < miny){miny = sumy;}}System.out.println(minx + miny);}
}
这篇关于题目 1262: 邮局选址问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!