最小化最大距离,一维数组
Posted
技术标签:
【中文标题】最小化最大距离,一维数组【英文标题】:Minimize the max distance, 1D array 【发布时间】:2020-10-09 02:51:37 【问题描述】:问题:
给定一组长度为 n(已排序)的数字,每个数字是一维线“城市”中房屋的位置。
给定一个数字 k
对于 A 中的每个元素,最小距离定义为 A 与超市之间的最小距离:|a-c|。
一个城市的成本定义为所有最小距离的最大值。
您需要找出长度为 n 且 k
我找不到这个问题的解决方案。解决方案应使用动态规划。我正在考虑如何编写递归公式,并且我想我已经提出了基本案例:
如果 k = n 那么显然结果将为 0,因为您可以将每个超市放在一个城市中
如果k = 1,我认为解应该是:(A[n] - A[1])/2。
但我想不出实际的公式(以及整个实际的动态程序)。另外,我似乎找不到这个答案的“标题”,我没有在网上找到这个确切答案的任何其他例子。
【问题讨论】:
邮箱是什么意思?我相信你指的是超市?超市可以在 1D 线上的任何地方出现 - 您是需要放置它们以获得最佳成本的人。 【参考方案1】:为了最小化与 k 个超市的最大距离,您将房屋分成连续的组,以便最小化每组中起始房屋和结束房屋之间的最大距离。然后你就在每组中间放一个超市。
这样解决问题使得动态规划更容易,因为它去除了超市位置的连续变量。
【讨论】:
谢谢!我明白你在说什么,但我不知道如何把它变成一个递归函数。 令 SOLUTION(n,k) 成为给定 k 和前 n 个房屋的解决方案。如果您对所有 x我想出了这个问题的递归函数:
如果展位多于房屋,则答案为 0 如果只有一个支架,那么我们将它放在边缘之间的中间否则:
对于从i到j的所有索引,我们计算它们之间的最大值,然后是最小值。
【讨论】:
欢迎来到 SO。您的答案可能很有用,但前提是您对其添加一些解释以上是关于最小化最大距离,一维数组的主要内容,如果未能解决你的问题,请参考以下文章
编程求出一个一维int型数组的元素最大值、最小值、平均值和所有元素之和
输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。