在Python中找到解码XOR排列的程序

在Python中找到解码XOR排列的程序

假设我们有一个数组enc。有一个数组perm,它是前n(奇数)个正整数的排列。这个列表将被编码成长度为n-1的数组enc,使得enc[i] = perm[i] XOR perm[i+1]。我们必须找到原始数组perm。

因此,如果输入是enc = [2,5,6,3],则输出将是[7,5,0,6,5],其中[7 XOR 5 XOR 0 XOR 6 XOR 5] = [2,5,6,3]

要解决这个问题,我们将遵循以下步骤-

  • n:enc的大小
  • result:大小为(n+1)的数组,填充为0
  • x:0
  • 循环1到n + 1:
    • x:= x XOR i
  • result [0]:= x
  • 循环1到n,每次增加2:
    • result[0]:= result[0] XOR enc [i]
  • 循环1到n:
    • result[i]:= result[i-1] XOR enc [i-1]
  • 返回结果

示例

让我们看以下实现以更好地理解-

def solve(enc):
   n = len(enc)
   result = [0] * (n+1)
   x = 0
   for i in range(1, n+2):
      x ^= i
   result[0] = x
   for i in range(1, n+1, 2):
      result[0] ^= enc[i]
   for i in range(1, n+1):
      result[i] = result[i-1] ^ enc[i-1]
   return result

enc = [2,5,6,3]
print(solve(enc))

输入

[2,5,6,3]

输出

[7, 5, 0, 6, 5]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程