本文最后更新于:1 年前
在刷蓝桥杯试题时候,有一道很意思又有丶烧脑的题目👇
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
<以下部分省略>
提交代码(Java)
暴力输出
刚开始想不出什么好办法,就直接把32个都写出来。抱着玩的心态,试试暴力输出看看系统给不给过,但是没想到,还真给我过了hhh
public class Main {
public static void main(String[] args) {
System.out.println("00000");
System.out.println("00001");
System.out.println("00010");
System.out.println("00011");
System.out.println("00100");
System.out.println("00101");
System.out.println("00110");
System.out.println("00111");
System.out.println("01000");
System.out.println("01001");
System.out.println("01010");
System.out.println("01011");
System.out.println("01100");
System.out.println("01101");
System.out.println("01110");
System.out.println("01111");
System.out.println("10000");
System.out.println("10001");
System.out.println("10010");
System.out.println("10011");
System.out.println("10100");
System.out.println("10101");
System.out.println("10110");
System.out.println("10111");
System.out.println("11000");
System.out.println("11001");
System.out.println("11010");
System.out.println("11011");
System.out.println("11100");
System.out.println("11101");
System.out.println("11110");
System.out.println("11111");
}
}
五层循环
这是我想到的第二个方法,就类似说的“逢二进一”吧
public class Main {
public static void main(String[] args) {
int a,b,c,d,e;
for(a=0;a<2;++a)
for(b=0;b<2;++b)
for(c=0;c<2;++c)
for(d=0;d<2;++d)
for(e=0;e<2;++e)
System.out.printf("%d%d%d%d%d\n",a,b,c,d,e);
}
}
以下两种方法均来自网络。
十进制转换二进制
public class Main {
public static void main(String[] args) {
for(int i=0;i<32;i++){
int a,b,c,d,e;
a = i%32/16;
b = i%16/8;
c = i%8/4;
d = i%4/2;
e = i%2;
System.out.printf("%d%d%d%d%d\n",a,b,c,d,e);
}
}
}
以下标求1
一共是32个串,给每个串设置0-31的下标。根据下标,寻找对应串中1出现的位置。👇
比如,下标3表示的串是“00011”,利用while循环可以找到出现1的下标是1、2
public class Main {
public static void main(String[] args) {
for(int i=0;i<=31;i++){
int a[]= new int[5];// 默认初始化值为0
//或 int a[]= {0,0,0,0,0};
int temp=i;
int index=0;
while(temp!=0)
{
a[index]=temp%2;
index++;
temp/=2;
}
for(int idx=4;idx>=0;idx--)
System.out.print(a[idx]);
System.out.println();
}
}
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!