24小时热门版块排行榜    

查看: 1742  |  回复: 13

ghw_nit

铁杆木虫 (正式写手)

对于每一个i1, i2, i3, ... , i(m) ,如果i值+1已在阵中,那么不继续考虑;如果i值+1不在阵中,那么找到d(i值)。然后比较所得的最多m个d(i值),找出最小的那个,对应的x(i值)就是要被替换的那个,把它换成x(i值+1),即得到次大组合。
能详细解释一下上面的话的意思么?特别是“如果i值+1已在阵中,那么不继续考虑;如果i值+1不在阵中,那么找到d(i值)。”,阵中是什么意思呢?
11楼2013-06-08 20:46:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙文章

木虫 (正式写手)

【答案】应助回帖

引用回帖:
11楼: Originally posted by ghw_nit at 2013-06-08 20:46:48
对于每一个i1, i2, i3, ... , i(m) ,如果i值+1已在阵中,那么不继续考虑;如果i值+1不在阵中,那么找到d(i值)。然后比较所得的最多m个d(i值),找出最小的那个,对应的x(i值)就是要被替换的那个,把它换成x(i值+1), ...

比如说,现在拿到的m个数是
x1, x3, x4, x7;
也就是说此时数组 i 中是
i1 = 1, i2 = 3, i3 = 4, i4 = 7;
找下一组的话我们需要把某一个数替换为仅次于它的数,对应 i 的话就是+1变为
2, 4, 5, 8;
也就是说这四个数的下一个数分别是
x2, x4, x5, x8;
在 2,4,5,8中,4已在阵中,没有办法把x3变成x4,所以只看另外的三种变化,找出相应的
d1=x1-x2, d4=x4-x5,d7=x7-x8,找出最小的,然后替换就是在大小上仅次于目前拿到的(x1, x3, x4, x7)的下一组。
12楼2013-06-08 21:30:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙文章

木虫 (正式写手)

引用回帖:
10楼: Originally posted by 龙文章 at 2013-06-08 17:28:48
一个组合变为次大的组合,肯定是其中某一个数,被替换为紧邻它的下一个数,前提当然是紧邻它的下一个数不在原组合中。所以我们要找到替换哪一个数,差值最小,即可得到次大组合。

注:本文一些符号表示为下角标, ...

“我觉得需要构建一个新的数组d[n-1],为原数组相邻两数之差,即d1 = x1 - x2, d2 = x2 - x3, ... , d(n-1) = x(n-1)- x (n).”
忽略了一个事情,d(n)也是需要的,d(n)=0,因为没办法找到比x(n)再小的了。所以要构建的数组为d[n].
13楼2013-06-08 21:36:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cooooldog

铁杆木虫 (著名写手)

ส็็็

【答案】应助回帖

要是等差数组或者容易找规律; 如果排序只代表了"秩次"的高低, 猜测就是无意义的了
ส็็็็็็็็็็็็็็็็็็็็
14楼2013-06-13 09:06:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ghw_nit 的主题更新
信息提示
请填处理意见