0

被问到这个亚马逊电话面试第一轮

所以对于长度 = 1

0 1 (0 1)

长度 = 2

00 01 11 10 (0, 1, 3, 2)

等等

编写长度 x 的函数,以数字(基数 10)形式返回数字

4

2 回答 2

3

这就是所谓的格雷码,有几种不同的类型,其中一些比其他的更容易构建。维基百科文章展示了一种从二进制转换为格雷码的非常简单的方法:

unsigned int binaryToGray(unsigned int num)
{
    return (num >> 1) ^ num;
}

使用它,您只需要遍历特定大小的所有数字,将它们放入该函数,然后根据需要打印它们。

于 2014-05-20T15:14:36.197 回答
0

这是一种方法:

int nval = (int)Math.Pow(2 , n);  
int divisor = nval/2; 
for (int i = 0; i < nval; i++)
{
    int nb =(int) (i % divisor);
    if ( nb== 2) Console.WriteLine(i + 1);
    else if (nb == 3) Console.WriteLine(i - 1);
    else Console.WriteLine(i);
}
于 2014-05-20T14:55:44.747 回答