zoukankan      html  css  js  c++  java
  • 用回溯法来产生由0或1组成的2m个二进位串,使该串满足以下要求

      视串为首尾相连的环,则由m位二进制数字组成的2m个子序列,每个可能的子序列都互不相同。例如,如果m=3,在串11101000首尾相连构成的环中,由3位二进制数字组成的每个可能的子序列都在环中恰好出现一次,它们依次是111,110,101,010,100,000,001,011,如图9-1所示:

      

    [程序]

     1 #define N 1024
    2 #define M 10
    3 int b[N+M-1];
    4 int equal(int k,int j,int m)
    5 {
    6 int i;
    7 for (i=0;i<m;i++)
    8 if (b[k+i]!=b[j+i]) return 0;
    9 return 1;
    10 }
    11
    12 int exchange(int k,int m,int v)
    13 {
    14 while (b[k+m-1]==v)
    15 {
    16 b[k+m-1]=!v; k--;
    17 }
    18 b[k+m-1]=v; return k;
    19 }
    20
    21 init(int v)
    22 {
    23 int k;
    24 for (k<0;k<N+M-1;k++) b[k]=v;
    25 }
    26
    27 main()
    28 {
    29 int m,v,k,n,j;
    30 printf("Enter m(1<m<10),v(v=0,v=1)\n");
    31 scanf("%d%d",&m,&v);
    32 n=0x01<<m;
    33 init(!v);
    34 k=0;
    35 while (++k<n)
    36 for (j=0;j<k;j++)
    37 if (equal(k,j,m))
    38 {
    39 k=exchange(k,m,v);
    40 j=-1;
    41 }
    42 for (k=0;k<n;k++) printf("%d\n",b[k]);
    43 }



  • 相关阅读:
    网络通信
    jvm调优
    rokectMq
    mybatis属性类
    spring cloud feign
    spring cloud hystrix
    spring cloud ribbon
    mybatis(二)创建代理类执行sql
    内存操作函数
    堆空间的开辟与使用
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2203707.html
Copyright © 2011-2022 走看看