我有一个列表
n (n < 500)
,其中包含表示海拔高度的正整数。我需要选择其中最多m (m < 255)
个点,以使新几何形状与原始几何形状尽可能相似。对于输入[10, 21, 15, 2, 8, 35, 94, 223, 370, 575, 701, 661, 592, 356]
和m = 8
,我想返回[10, 0, 0, 0, 8, 0, 94, 0, 370, 575, 701, 0, 592, 356]
(0
表示跳过该数字)。因为我们通过线连接点时,拥有的几何形状是[10.0, 9.5, 9.0, 8.5, 8.0, 51.0, 94.0, 232.0, 370.0, 575.0, 701.0, 646.5, 592.0, 356.0]
,点的误差为[0.0, 11.5, 6.0, 6.5, 0.0, 16.0, 0.0, 9.0, 0.0, 0.0, 0.0, 14.5, 0.0, 0.0]
,因此最大误差为16
我尝试使用动态规划方法,其中dp [i] [j]
是从i
位置开始的数组的解决方案,最多使用不超过j
个元素。为了计算每个k
从i
到n
,如果k
是第一个元素,则计算最大误差,并取其和dp [k + 1] [j-1]
的最大值。
我们可以花费O(1)
时间来计算每个k
到连接点i-1
和k
的线的最大距离吗?有人有想法如何在O(n^2)
中解决整个问题吗?