2
A
回答
0
这样的事情(用Haskell写的)?
import Data.List (minimum, maximum, minimumBy)
minDiff (x:xs) = comb (head x) (diff $ matches (head x)) x where
lenxs = length xs
diff m = maximum m - minimum m
matches y = minimumBy (\a b -> compare (diff a) (diff b)) $ p [] 0 where
md = map (minimumBy (\a b -> compare (abs (a - y)) (abs (b - y)))) xs
mds = [m | m <- foldl (\b a -> filter (\z -> abs (z - y) == abs (y - md!!a)) (xs!!a) : b) [] [0..lenxs - 1]]
p result index
| index == lenxs = [y:result]
| otherwise = do
p' <- mds!!index
p (p':result) (index + 1)
comb result difference [] = matches result
comb result difference (z:zs) =
let diff' = diff (matches z)
in if diff' < difference
then comb z diff' zs
else comb result difference zs
OUTPUT:
*Main> minDiff [[1,3,5,9,10],[2,4,6,8],[7,11,12,13]]
[5,6,7]
+2
对于任何不了解Haskell的人来说(或者至少难以阅读)可能是不可读的。尝试在给出算法答案时包含算法描述,注释和/或伪代码。 – Dukeling 2013-04-12 07:46:25
相关问题
- 1. 2角之间的最小差异
- 2. 阵列中两个数字之间的最小绝对差异
- 3. 查找两个数组之间的最小差异
- 4. 高度与最大/最小高度之间的差异
- 5. 数字之间的列表差异
- 6. 数据之间的差异
- 7. 2小时之间的差异?
- 8. 查找小时之间的差异
- 9. 计算小时之间的差异
- 10. 库,以最小化IE和Firefox之间的差异
- 11. 找到numpy阵列之间最小差异的位置
- 12. 如何找到Mysql中两列之间的最小差异?
- 13. 选择SQL中日期之间的最小差异
- 14. 小数格式的2个日期时间之间的差异
- 15. 获取2个数字之间的数字计数差异
- 16. 最大和最小差异
- 17. 最大化最小差异
- 18. 如何比较两个数字的数字之间的差异?
- 19. 现在和现在之间的差异时间抛出1小时差异(C++)
- 20. Safari和Chrome之间的字体大小和边距差异
- 21. 分辨率之间的字体大小差异
- 22. 找到最小的差异
- 23. 计算最大值和最小值之间的差异在不同的表
- 24. 获取排序列表中相邻数组元素之间的最小差异
- 25. SQL:行之间的差异
- 26. 2天之间的差异
- 27. 差异之间的三个
- 28. ZREMRANGEBYRANK ZREMRANGEBYSCORE之间的差异
- 29. 日期之间的差异
- 30. 行之间的Mysql差异
每组中有多少个元素? K有多大? – gkiko 2013-04-11 10:25:04
如果您从每组中选择最小值 - 是否可行? – dekdev 2013-04-11 10:30:11
@simplecoder:显然不是;简单地考虑两组{1,2,3}和{-3,-2,-1} – 2013-04-11 10:34:29