1.cpp
来自「用分治发实现输出格雷码的源代码」· C++ 代码 · 共 52 行
CPP
52 行
#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 + =
减小字号Ctrl + -
显示快捷键?