zoukankan      html  css  js  c++  java
  • c++实现gray code(格雷码)

    今天别人问的一道题,强调用分治法实现 =。= 

    百度了一下格雷码,然后写了一下。

    关于格雷码大家看百度的吧,特别详细,贴个图:

    代码如下(header_file.h是我自己写的一个头文件,包括常见的vector iostream等):

    #include"header_file.h"
    using namespace std;
    
    vector<string> gray_code(int n)
    {
        if(n==1)
        {
            vector<string> v;
            v.push_back("0");
            v.push_back("1");
            return v;
        }
        else
        {
            vector<string> v;
            vector<string> v1;
            v1=gray_code(n-1);
            
            for(int i=0;i<v1.size();i++)
            {
                v.push_back("0"+v1[i]);
            }
            for(int i=(v1.size()-1);i>-1;i--)
            {
                v.push_back("1"+v1[i]);
            }
            
            return v;
        }
    }
    
    int main(int argc,char *argv[])
    {
        int n;
        cout<<"input n:";
        cin>>n;
        
        vector<string> v;
        v=gray_code(n);
        for(int i=0;i<v.size();i++)
        {
            cout<<v[i]<<endl;
        }
    }

    最后:过程是重要的,代码只是你逻辑的体现 -。-

  • 相关阅读:
    栅格系统
    JQuery
    week 4
    week 1
    js嵌套,BOM,DOM,内置对象,数组,自定义对象,正则表达式
    week 2
    case when的两种用法
    获取当前路径
    parse,tryparse区别
    parse ,tryparse 续
  • 原文地址:https://www.cnblogs.com/wswang/p/5111122.html
Copyright © 2011-2022 走看看