如何生成最多为k的n位格雷码?

时间:2015-09-05 06:43:37

标签: algorithm combinations

我理解格雷码在它们之间有一点变化,以及如何在二进制和灰色之间进行转换。但是如果长度为 n ,我想生成一系列格雷码(所有可能的),这些码有一位变化且最大 k 。 示例:给定n = 3k = 2
001 011 010 110 100 101

2 个答案:

答案 0 :(得分:1)

我能想到的一个可能的解决方案与格雷码生成完全不同,通常是:

  • 生成k(汉明距离)
  • 内的所有数字
  • 生成上述所有可能的有效组合并选择最长的组合。

但我不喜欢它,因为你需要将所有数字存储在一个Set中并使用try和error。

答案 1 :(得分:1)

我不相信可以设计这样的代码。这是案例n=4, k=2的证据的非正式大纲。将有4个代码设置为1位,6个设置为2位。

0000开始(尽管我不认为编码实际开始的地方因为格雷码环绕)。然后下一个代码将设置1位。顺序中的下一个必须设置2位,1位后一位,然后是2位,然后是1位,然后是2位,然后是1位,然后是2位,你仍然有2位代码,其中2位设置为左...