24小时热门版块排行榜    

查看: 1731  |  回复: 13
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ghw_nit

铁杆木虫 (正式写手)

[求助] 已经排好序的数组的求和问题

现有一个排好序的数组,假如这个数组有n个数,此时的排序是由大到小排列的,在这n个数中任取m个数加和,这种和有什么关系呢?
假如我取5个数,那么我可以肯定的说这个数组中前五个数的和是所有的五个数的组合中最大的拿一个,那么次大的是哪一个,是不是把第五个数去掉,换成第六个数就是次大的呢,第三大的是把第五个位置换成第七个数呢,这是我的猜测,不能证明,不知道我的猜测是不是对,能不能证明这件事呢。希望有人能指点一下。谢谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙文章

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
ghw_nit: 金币+30, ★★★很有帮助 2013-06-08 20:09:47
一个组合变为次大的组合,肯定是其中某一个数,被替换为紧邻它的下一个数,前提当然是紧邻它的下一个数不在原组合中。所以我们要找到替换哪一个数,差值最小,即可得到次大组合。

注:本文一些符号表示为下角标,请脑补。。。
新建一个数组x[n],记由大到小排列后数组为x1, x2, x3, ... , x(n).
新建一个数组i[m],每一项都是不大于n的正整数,用以表示这m个数在原数组中的位置,即
i1, i2, i3, ... , i(m) 表示取到的m个数为 x(i1), x(i2), x(i3), ... x(i(m)).

我觉得需要构建一个新的数组d[n-1],为原数组相邻两数之差,即d1 = x1 - x2, d2 = x2 - x3, ... , d(n-1) = x(n-1)- x (n).

对于每一个i1, i2, i3, ... , i(m) ,如果i值+1已在阵中,那么不继续考虑;如果i值+1不在阵中,那么找到d(i值)。然后比较所得的最多m个d(i值),找出最小的那个,对应的x(i值)就是要被替换的那个,把它换成x(i值+1),即得到次大组合。
10楼2013-06-08 17:28:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 14 个回答

weft

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
话说, 这不是排序不等式的直接推论吗?
2楼2013-06-05 05:53:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pippi6

铁杆木虫 (著名写手)

工程和科学数值计算咨询

你的猜测成立应该是比较明显的,证明好像也就是个力气活吧
3楼2013-06-05 06:08:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ghw_nit

铁杆木虫 (正式写手)

是的,昨天有点晕了,现在已经向清楚了
4楼2013-06-05 07:54:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见