本篇文章主要给出生成格雷码的代码,鉴于自身水平所限,如有错误,欢迎批评指正。(欢迎进Q群交流:874653199)
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
void graycode(int);
int n = 10;
int a[1024][10];
int main() {
int i, j, num = 1;
for (i = 0; i<n; i++) {
num = 2 * num;
}
graycode(n);
fstream code;
code.open("格雷码.txt", fstream::out);
for (i = 0; i<num; i++)
{
for (j = 0; j<n; j++)
{
code << a[i][j] << " ";
}
code << endl;
}
return 0;
}
void graycode(int n) {
int i, j, num = 1;
if (n == 1)
{
a[0][0] = 0;
a[1][0] = 1;
}
else {
for (i = 0; i < n; i++)
{
num = 2 * num;
}
graycode(n - 1);
for (i = 0; i < num / 2; i++)
{
for (j = 0; j < n - 1; j++)
{
a[num - 1 - i][j] = a[i][j];
}
}
for (i = 0; i<num / 2; i++)
a[i][j] = 0;
for (i = num / 2; i<num; i++)
a[i][j] = 1;
}
}
结果: