📄 1.cpp
字号:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
using namespace std;
void Graycode( int a, int b, int ** arr)
{
//递归出口
if(a==1)
return;
//处理当前列
for(int i = 0; i < a/2 ; i++)
{
arr[i][b-1] = 0;//上半部分赋值为0
arr[a-i-1][b-1]=1; //下半部分赋值为1
}
//处理子问题
Graycode(a/2,b-1,arr);//递归调用子问题,生成列数为b-1的Gray码,填写高半部分
for(int k = a/2; k<a; k++)//将(n-1)位的Gray码逆序后,填入目标码字/的低半部分
for( int j =0; j<b-1; j++)
arr[k][j]=arr[a-k-1][j];
}
int main()
{
int n;
ifstream in("in.txt");
ofstream out("e://out.txt");
in>>n;
int row=pow(2,n);
int **arr=new int*[row];
for(int m=0;m<row;m++){
arr[m]=new int[n];
}
Graycode(row,n,arr);
for(int i=0;i<row;i++)
{
for(int j=0;j<n;j++)
cout<<arr[i][j];
cout<<endl;
}
in.close();
out.close();
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -