求数组的最长路径和问题


假设有一个大小为N的数组


 L = [1, 2, ..., n]

随机选择两个值, 两者的差的绝对值就是它们之间的路径长

比如, 选择到了1 和 n 这两个值, 那么路径长就是n-1

依次选择下去, 直到每一个数都被选到,
(假设这个数组的大小是偶数吧, 那就不会出现有单独的不能两两配对的情况了)

现在, 问题是, 怎么选择, 才能使得得到的 路径长的和最大 呢?

数据结构 算法 数组

YUSA龙骑 10 years, 6 months ago

S = [1, 2, ..., n/2]
B = [n/2+1, n/2+2, ...,n]

每次分别在上述两个区间取值,则路径长之和最大。

Result = Sum(B) - Sum(S)
    = n*n/4

背着路,向前走 answered 10 years, 6 months ago

Your Answer