程序将给定数字的格雷码转换为 Python


假设我们有一个数字 n,我们必须找到给定数字的格雷码(换句话说,即第 n 个格雷码)。众所周知,格雷码是对二进制数进行排序的一种方式,它使每个连续数字的值相差正好一位。一些格雷码包括:[0, 1, 11, 10, 110, 111,等等]

因此,如果输入类似于 n = 12,则输出将为 10,因为 12 在二进制表示中为 (1100),对应的格雷码将为 (1010),其十进制等效值为 10。

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

  • 定义一个函数 solve()。它将采用 n
  • 如果 n 等于 0,则
    • return 0
  • x := 1
  • while x * 2 <= n, 执行
    • x := x * 2
  • return x + solve(2 * x - n - 1)

让我们看看以下实现以增进理解

示例

在线演示

class Solution:
   def solve(self, n):
      if n == 0:
         return 0
      x = 1
      while x * 2 <= n:
         x *= 2
      return x + self.solve(2 * x - n - 1)

ob = Solution()
n = 12
print(ob.solve(n))

输入

12

输出

10

更新时间:2020 年 11 月 26 日

763 次浏览

开启你的 职业 生涯

完成课程,获得认证

开始
广告