| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1840 人关注过本帖
标题:[讨论]讨论一下这个题的算法.......
只看楼主 加入收藏
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
11楼的够简捷,不过还是那个问题,在某些情况下不能得到最优解,比如:
输入一窜整数:1 4 5 8 9 13 14 17 22 27
运行结果是:
(a组) 1 8 9 17 27 62(总和)
(b组)4 5 13 14 22 58(总和)
但其实最优解为:
(a组) 1 5 14 13 27 60(总和)
(b组) 4 8 17 9 22 60(总和)

人生重要的不是所站的位置,而是所朝的方向
2007-05-19 15:28
jiangzw625
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2006-3-27
收藏
得分:0 
已经差不多了阿。再加一步就可以。
另偶数组为A,奇数组为B
当数组元素个数为偶数
因为两个数组都是有序的。并且A[i]>=B[i]
所以sum(A)>=sum(B)
而且每个数组不管是什么数,都可以成为有序的。
所以A[i]可以与B[i]交换,这样sum(A)减少,sum(B)增大
并保证仍然有序
可以得到最优解。
否则
先忽略B[0],这时B[i]>=A[i]
与上面的情况恰恰相反,但这时要比较的是
(sum(B)与sum(A)的绝对值-B[0])最小值.
同样可得到最优解

马马乎乎
2007-05-19 17:48
北冥鸟
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-5-16
收藏
得分:0 

可不可以先把所有的数字由小到大或者由大到小排列好,
将这些数字放到数组中。
然后第一个和最后一个,第二个和倒数第二个组合,
这样将数字分成两组,sum1 sum2
这样就可以把它们的差算出且最小!


坚持追求,守住幸福。
2007-05-19 18:25
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 
十个int型的数,是由用户输入的,数的大小都不固定!如果14楼这样分的话,那就

论坛是我家灌水靠大家
2007-05-19 21:37
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
SUM/2的0-1背包问题。已知是整数的话可以用动态规划,不是整数就DFS。
2007-05-20 01:28
谁与争疯
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:海南省
等 级:版主
威 望:191
帖 子:15071
专家分:17513
注 册:2007-4-22
收藏
得分:0 
头晕,是不是运用了数据结构的问题?还没有学到数据结构。

论坛是我家灌水靠大家
2007-05-20 08:30
lishixiong
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-5-20
收藏
得分:0 

我的一点想法:

1.先输入10个数到x[]中。
2.任取一个放入a[]中,然后在x[]中剩余的9个数中寻找与a[1]差值最小的元素放入b[1]中。
3.利用循环计算a[],b[]数组所有元素之和,求出差值再在x[]中剩余的元素中寻 找与差值最接近的元素,放入和较小的一组数组中。
4.以此方法直到赋完x[]中所有的元素。

此题得解。

2007-05-20 10:28
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
收藏
得分:0 
16楼 那为高手,能不能详细一点解释一下,什么是“动态规划”?为什么当 SUM/2 不是整数时就用DFS(深度优先是吗?)?

人生重要的不是所站的位置,而是所朝的方向
2007-05-20 12:44
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
已知若干物品的大小,以及一个背包容量,物品不能分割,求此背包所能装载的最大物品总大小的问题,named 0-1背包问题。
更一般的形式是,已知若干物品的大小和价值,以及一个背包的容量,物品不能分割,求此背包作能装载的最大物品价值总和。

把这道题目的每个数看作一个物品大小,物品总大小记为SUM,背包容量SUM/2,求解这个背包问题就可以把数分为两个部分,装在背包里的部分,和没装在背包里的部分,这两部分的差值是最小的。

而背包问题的解法在许多算法书中都有详细讨论,我不在此详述
2007-05-20 14:54
amdam23000
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2007-5-10
收藏
得分:0 

十四楼的不可行啊~~~

2007-05-20 19:30
快速回复:[讨论]讨论一下这个题的算法.......
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved