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. Postgres:找到时间戳行之间的最小差异
- 7. 数字之间的列表差异
- 8. 最小差异
- 9. 数组之间的差异
- 10. 数据之间的差异
- 11. Flex和Flash之间的大小差异?
- 12. Lotus Notes:小时之间的差异
- 13. 2小时之间的差异?
- 14. 查找小时之间的差异
- 15. 计算小时之间的差异
- 16. mysql加入的值之间的差异是最小的?
- 17. 行之间的最大差异
- 18. 选择SQL中日期之间的最小差异
- 19. 样本与两个连续值之间的最小差异
- 20. mysql检索当前和最后一小时之间的差异
- 21. 如何找到Mysql中两列之间的最小差异?
- 22. 找到numpy阵列之间最小差异的位置
- 23. 库,以最小化IE和Firefox之间的差异
- 24. 两个列表中元素之间的最小差异总和
- 25. 获取元件之间的最小差异每组
- 26. 两个角度之间的最小差异?
- 27. 小数格式的2个日期时间之间的差异
- 28. 最大和最小差异
- 29. 最大化最小差异
- 30. 获取2个数字之间的数字计数差异
每组中有多少个元素? 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