zoukankan      html  css  js  c++  java
  • 01字串

    题目如下:

       

    解法一:简单、讨巧了

     1 class test 
     2 {
     3     public static void main(String[] args) 
     4     {
     5         int a,b,c,d,e;
     6 
     7         for(a=0;a<=1;a++)
     8           for(b=0;b<=1;b++)
     9             for(c=0;c<=1;c++)
    10               for(d=0;d<=1;d++)
    11                 for(e=0;e<=1;e++)
    12                   System.out.printf("%d%d%d%d%d
    ",a,b,c,d,e);
    13     }
    14 }

    解法二:
    二进制数1-5位的权值分别为:1、2、4、8、16,如果对应的十进制数位X,则
    X=a*1+b*2+c*4+d*8+e*16,其中,a、b、c、d、e要么是0要么是1。
    观察表达式可以知道,(int)(X/16)即为高位的二进制位,(X%16)再除以相应的权即可得到次高位的二进制位、、、
     1 class test
     2 {
     3     public static void main(String [] args)
     4     {
     5         int[] Arr={1,2,4,8,16};//权值
     6         int[] Res=new int[5];
     7         int num,Tem,Sh;
     8         int j,k,i;
     9         
    10         for(k=0;k<5;k++)  //清零
    11            Res[k]=0;
    12         for(j=0;j<32;j++)
    13         {   
    14             num=j;
    15             for(i=4;i>=0;i--)
    16             {
    17                 Tem=Arr[i];          //取权值待用
    18                 Sh=(int)(num/Tem);  //num<32,Sh要么是0要么是1
    19                 Res[i]=Sh;
    20                 num=num-Tem*Sh;     
    21             }
    22 
    23             for(k=4;k>=0;k--)     //打印数组
    24               System.out.print(Res[k]);
    25             System.out.println();
    26         }
    27     }
    28 }

      

    解法三:

    类似解法二,(X%2)即为最低位的二进制位,(int)(X/2))再除以2可得次低位的二进制位、、、

     1 class test 
     2 {
     3     public static void main(String[] args) 
     4     {
     5         int[] res=new int[5];
     6         int i,j,h;
     7         int temp;
     8 
     9         for(i=0;i<5;i++)
    10             res[i]=0;
    11         for(i=0,j=0;j<32;j++,i=0)
    12         {
    13            res[i]=j;          //先把需要打印的二进制数赋给最低位
    14            while(res[i]>=2)  //当前位大于2,需要调整
    15            {
    16               temp=res[i]/2;     //余数即为最低位,而商
    17               res[i]=res[i]%2;  //再赋给高一位
    18               res[++i]=temp;
    19            }
    20 
    21            for(h=4;h>=0;h--)  //打印数组
    22              System.out.printf("%d",res[h]);
    23            System.out.printf("
    ");
    24         }
    25         
    26     }
    27 }

    解法四:

    思维类似十进制一样,从00000开始,然后逐渐从低位加1,某一位满2,则需要相应的调整。但调整时,总是从最低位开始,即只有当最低位满2时,其他位才可能需要调整。

     1 class test {
     3     public static void main(String[] args) 
     4     {
     5         int i,j;
     6         int[]arr=new int[5];
     7 
     8         for(i=0;i<5;i++)
     9             arr[i]=0;
    10         System.out.printf("00000
    ");  //先输出00000的情况
    11 
    12         for(i=0,j=1;j<32;j++,i=0)
    13         {
    14            arr[i]=arr[i]+1;    //个位数加1
    15            while(arr[i]==2)   //满2,当前位清零,并向高位进位,循环判断其它高位
    16            {
    17               arr[i++]=0;    
    18               arr[i]++;
    19            }
    20 
    21            for(i=4;i>=0;i--)
    22                System.out.printf("%d",arr[i]);
    23            System.out.printf("
    ");
    24 
    25         }
    26     }
    27 }                                                                                                                                                                      
  • 相关阅读:
    sratookit
    转录组测序
    单菌基因组测序常见问题
    微生物测序样本准备方法总结
    Review:Microbiota, metagenome, microbiome傻傻分不清
    扩增子、宏基因组测序问题集锦
    扩增子图表解读8网络图:节点OTU或类Venn比较
    扩增子图片解读7三元图
    扩增子图表解读5火山图:差异OTU的数量及变化规律
    扩增子图表解读6韦恩图:比较组间共有和特有OTU或分类单元
  • 原文地址:https://www.cnblogs.com/ttpn2981916/p/6391248.html
Copyright © 2011-2022 走看看