主题: Array Puzzle
查看单个帖子
  #3 (permalink)  
旧 2008-04-21
polyrandom 的头像
polyrandom polyrandom 当前离线
超级版主
 
注册日期: 2002-09-03
帖子: 3,138
文章: 20
polyrandom 正向着好的方向发展
默认 回复: Array Puzzle

其实如果把这个数列看成一个长度为2n的数列,每一项分别为a[0]到a[2n-1],那么转换以后的数列b有b[x] = a[x%2*n+x/2]。
可以使用交换的方法来做,把a[1]记下,然后从a[1]开始,运用上面的公式找到对应的元素,依次循环,可以确保只使用一个额外存储。但是这个是不完善的,因为这样的交换最终会形成一个环,而如果这个环不足以覆盖所有的元素,就需要进行下一次循环,而怎样计算下一次循环的起始点是个问题,我没找到统一的规律。
回复时引用此帖