据说是华为面试题:交换两个数组,使得数组的和的差最小.

Coder-zhw 2009-09-23 10:08:58
各位大侠:

帮我看看这个题怎么做呢?

据说是华为面试题:

有两个数组a,b; 要求交换数组的值.使得 两数组的和的差最小!!

怎么做啊?
...全文
521 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色夹克衫 2009-09-24
  • 打赏
  • 举报
回复
又是Sum/2的背包问题,不过加了个条件,就是背包元素的个数=a数组的元素个数,
以前写过这类的程序,不过手头上找不到了,如果是实数的话,就用搜索剪枝,如果是整数的话,就用DP
基本上就是这个思路了。
xiaoyu821120 2009-09-24
  • 打赏
  • 举报
回复
这种题目应该有点限制的吧,比方说只能交换一个数,或者是交换只能是一个数换一个数等,一般这种题目都只能穷举。
crst_zh 2009-09-23
  • 打赏
  • 举报
回复
(1 2 3) sum 6
(4 5 6) sum 15
总和 sum =21

取一半 21/2=10

10-6=4;
15-10=5
那么5-1=4;交换 5 和 1得:
(5 2 3)====>10
(4 1 6)====>11
或者交换6 和2 (因为差为4)

或者交换6 和1 (因为差为5)
Coder-zhw 2009-09-23
  • 打赏
  • 举报
回复
算法啊?

我不懂?

能不能贴一下代码呢?
acdbxzyw 2009-09-23
  • 打赏
  • 举报
回复
求出兩數組總和,取其一半做終值。
對其中一個數組使用背包尋找最優解。
acdbxzyw 2009-09-23
  • 打赏
  • 举报
回复
背包問題

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧