基础练习 01字串

时间限制:1.0s 内存限制:256.0MB

问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>

附上代码:

public class zeroAndOne {

    public static void main(String[] args) {
        
        
        //暴力做法
        Method1();
        //转二进制做法
        System.out.println("我是分割线——————————————");
        Method2(32);
    }
    
    public static void Method1(){
        for(int i1 = 0;i1 < 2; i1 ++){
            for(int i2 = 0;i2 < 2; i2 ++){
                for(int i3 = 0;i3 < 2; i3 ++){
                    for(int i4 = 0;i4 < 2; i4 ++){
                        for(int i5 = 0;i5 < 2; i5 ++){
                            System.out.println(i1+""+i2+""+i3+""+i4+""+i5);
                        }
                    }
                }
            }
        }
    }
    
    public static void Method2(int n) {
        //这题输出的就是0-32的二进制,所以我们只需要转成二进制的形式就行了
        for(int i = 0;i < 32;i ++)
        System.out.println(i%32/16 +""+ i%16/8 +""+ i%8/4 +""+ i%4/2 +""+i%2);
        //详细解释请看下面注解
    }
}

注解:
二进制每多一位,相当于乘2.如:
二进制:10 十进制:2 二进制:11 十进制:3
当他们逐步乘2,将会变成:
二进制:100 十进制:4 二进制:111 十进制:7
二进制:1000 十进制:8 二进制:1111 十进制:15
依次类推,所以这题我们就可以采用这种方法进行输出。

Last modification:March 17th, 2019 at 01:38 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment