⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 用分治发实现输出格雷码的源代码
💻 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 + -