题意:
给出一组n位的Gray Code。
思路:
之前想用模拟的方法求解,发现时间复杂度有点高。参考了wiki上的生成方法:https://en.wikipedia.org/wiki/Gray_code
n*(n/2)
代码如下:
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* grayCode(int n, int* returnSize) {
int k=pow(2,n);
int i,j;
int *p=(int*)malloc(sizeof(int)*k);
for(i=0;i<k;++i){
*(p+i)=i^(i/2);
}
*returnSize=k;
return p;
}
转载请注明原文地址: https://ju.6miu.com/read-1293825.html