格雷码算法
#include<stdio.h> #include<math.h> #include<stdlib.h> int a[1000] = {0}; void gray(int n) { int i,j; if(n == 1) {a[0] = 0; a[1] = 1;} else { gray(n-1); j = pow(2,n-1); for(i = j;i<2*j;i++) { a[i] = a[2*j-1-i] + j; } } } int bitofh(int bi,int len) { int i = 0; int temp = 1; while(i<len) { if((bi & (temp<<(len-i-1)))!=0) { printf("1"); } else {printf("0");} i++; } printf("\n"); return 0; } int main() { char string[10]; int n,k,b; scanf("%d",&n); gray(n); for(k=0;k<pow(2,n);k++) { bitofh(a[k],n); } return 0; }
实现格雷码的输出