• 递归与分治1


    格雷码问题:

    对于给定的正整数n,格雷码为满足如下条件的一个编码序列:

    (1) 序列由2n个编码组成,每个编码都是长度为n的二进制位串。

    (2) 序列中无相同的编码。

    (3) 序列中位置相邻的两个编码恰有一位不同。

    例如:n=1时的格雷码为:{0, 1}

    n=2时的格雷码为:{00, 01, 11, 10}

    n=3时的格雷码为:{000, 001, 011, 010,110,111,101,100}

    gray码问题求解思想:

    将一个规模ngray码序列表示为G(n), G(n)以相反顺序排列的序列表示为G(n)。则gray码的构造规则即子问题的划分规则为:G(n+1)= 0G(n) 1G(n)

    gray码问题代码:G(n+1)= G(n) 0G(n)1

    import java.util.*;
    import java.io.*;
    public class Gray{
      public static String[] GrayCode(int n){
         String[] grayCodeArr=new String[(int)Math.pow(2,n)];
          
         if(n<1){
            System.out.println("");
         }
         if(n==1){
            grayCodeArr[0]="0";
            grayCodeArr[1]="1";
            return grayCodeArr;
         }
          //n-1格雷码
         String[] before=GrayCode(n-1);
         for(int i=0;i<before.length; i++){
            grayCodeArr[i]="0"+before[i];
            grayCodeArr[grayCodeArr.length-1-i]="1"+before[i];
         }
         return grayCodeArr;
      }
    
      public static void main(String[] arg){
         Scanner input=new Scanner(System.in);
         int n=input.nextInt();
         String[] strArr=GrayCode(n);
         for(int i=0;i<strArr.length;i++){
            System.out.println(strArr[i]);
         }
      }
    }
  • 相关阅读:
    Metricbeat
    Flask安装与基本配置
    web框架
    git
    占位
    算法
    面试
    CMDB
    order by关键字排序优化
    动态主机配置协议-DHCP
  • 原文地址:https://www.cnblogs.com/ljs-666/p/7892193.html
Copyright © 2020-2023  润新知