Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 找到数字1到N的排列,使排列中的任意两个数字的平均值不会出现在它们之间_Algorithm_Math_Permutation - Fatal编程技术网

Algorithm 找到数字1到N的排列,使排列中的任意两个数字的平均值不会出现在它们之间

Algorithm 找到数字1到N的排列,使排列中的任意两个数字的平均值不会出现在它们之间,algorithm,math,permutation,Algorithm,Math,Permutation,对于例如:对于N=4,[1,3,2,4]是溶液置换,但[1,4,2,3]不是,因为2出现在1和3之间 我在读这篇解决这个问题的博客文章。 我无法理解解决这个问题的分而治之的方法,因为奇数和偶数的平均数不是整数,因此不需要关心。我很难理解第一次除法后逻辑是如何进行的。以下是如何将此问题简化为较小的问题: 假设所有输入的数字都是偶数。然后,将所有数字除以2并求解,最后将所有数字乘以2 假设所有输入的数字都是奇数。然后,给所有数字加1,然后求解它们,最后从所有数字中减去1 假设有些数字是奇数,有些是

对于例如:对于N=4,[1,3,2,4]是溶液置换,但[1,4,2,3]不是,因为2出现在1和3之间

我在读这篇解决这个问题的博客文章。


我无法理解解决这个问题的分而治之的方法,因为奇数和偶数的平均数不是整数,因此不需要关心。我很难理解第一次除法后逻辑是如何进行的。

以下是如何将此问题简化为较小的问题:

  • 假设所有输入的数字都是偶数。然后,将所有数字除以2并求解,最后将所有数字乘以2

  • 假设所有输入的数字都是奇数。然后,给所有数字加1,然后求解它们,最后从所有数字中减去1

  • 假设有些数字是奇数,有些是偶数。然后,先求奇数,然后求偶数,并将这两个结果联系起来

  • 例如,对于给定的输入向量(1,2,3,4,5,6,7):

    所以最终

    P([1,2,3,4,5,6,7]) = [1,5,3,7,2,6,4]
    
    P([1,2,3,4,5,6,7]) = [1,5,3,7,2,6,4]