一道编程题 求算法思路.
给出n(2<=n<=20)个数每个数很大在(100W-400W)之间吧现在要求从中选出一些数(可以不选)分别放到2个集合里面使这2个集合里面数的总和相等,并要求这2个集合...
给出n(2<=n<=20)个数 每个数很大 在(100W-400W)之间吧
现在要求从中选出一些数(可以不选)分别放到2个集合里面 使这2个集合里面数的总和相等,并要求这2个集合中数的总和尽量大.
问满足条件的集合中的数的总和为多少?
比如有5个数分别是 1,2,3,4,5
那么应从中选出3,4为一个集合 2,5为一个集合 这样他们的总和相等(都为7).
结果就是7
怎么做啊?
说说思路就行啦
谢谢
。。。
必然超时吧 展开
现在要求从中选出一些数(可以不选)分别放到2个集合里面 使这2个集合里面数的总和相等,并要求这2个集合中数的总和尽量大.
问满足条件的集合中的数的总和为多少?
比如有5个数分别是 1,2,3,4,5
那么应从中选出3,4为一个集合 2,5为一个集合 这样他们的总和相等(都为7).
结果就是7
怎么做啊?
说说思路就行啦
谢谢
。。。
必然超时吧 展开
3个回答
展开全部
排序是必然的也是从大到小好了
然后最大的数去加第3大的数(和第2大的加必然无解),得出A,第2大的去和第4大的加,得出B,如果A>B则设置A=最大的加第4大的(同时要判断下第2大加第3大是否比他大,依次类推),如果A<B则B=第2大加第5大(如果第2的找完了从第3开始),A=B的换那就是答案了(保留)
楼上的算法也可行,就是工程量大了,使用穷举法,计算量大,而且他还有一个漏洞第一或第2循环中的两个数相加并没有考虑
然后最大的数去加第3大的数(和第2大的加必然无解),得出A,第2大的去和第4大的加,得出B,如果A>B则设置A=最大的加第4大的(同时要判断下第2大加第3大是否比他大,依次类推),如果A<B则B=第2大加第5大(如果第2的找完了从第3开始),A=B的换那就是答案了(保留)
楼上的算法也可行,就是工程量大了,使用穷举法,计算量大,而且他还有一个漏洞第一或第2循环中的两个数相加并没有考虑
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-02-02
展开全部
设置数组存N个100W-400W之间的数,设置循环使数组中的数从大到小排序;
设置第一个循环,按排列好的顺序从N个数组中选出从X(1<=X=<N)个数相加;
设置第二个循环,从N-X个数中选出Y(1<=Y<=N-X)个数相加;
判断二者和是否相等,相等则输出总和数。
设置第一个循环,按排列好的顺序从N个数组中选出从X(1<=X=<N)个数相加;
设置第二个循环,从N-X个数中选出Y(1<=Y<=N-X)个数相加;
判断二者和是否相等,相等则输出总和数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询