【发布时间】:2010-09-23 13:43:42
【问题描述】:
我有一个元素数组 (arr),以及一个接受 2 个元素并返回一个数字的函数 (f)。
我需要数组的排列,使得f(arr[i], arr[i+1]) 对于arr 中的每个i 尽可能少。 (它应该循环,即它还应该最小化f(arr[arr.length - 1], arr[0]))
另外,f 有点像距离,所以f(a,b) == f(b,a)
如果效率太低,我不需要最佳解决方案,但是一个运行合理且速度快的解决方案,因为我需要实时计算它们(我不知道arr 的长度是多少,但我认为它可能在 30 左右)
【问题讨论】:
-
如果你有从零开始的数组,那么你的循环条件应该是 f(arr[arr.length - 1 ], arr[0])) 对吧?
标签: arrays algorithm language-agnostic permutation mathematical-optimization