问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
我看到问题后,先想到创建一个二维数组,用笨方法,一个个赋值进去了再逐个输出,能运行通过
在这里插入代码片int arr[][] ={{0,0,0,0,0},{0,0,0,0,1},{0,0,0,1,0},{0,0,0,1,1},{0,0,1,0,0},{0,0,1,0,1},{0,0,1,1,0}
,{0,0,1,1,1},{0,1,0,0,0},{0,1,0,0,1},{0,1,0,1,0},{0,1,0,1,1},{0,1,1,0,0},{0,1,1,0,1}
,{0,1,1,1,0},{0,1,1,1,1},{1,0,0,0,0},{1,0,0,0,1},{1,0,0,1,0},{1,0,0,1,1},{1,0,1,0,0}
,{1,0,1,0,1},{1,0,1,1,0},{1,0,1,1,1},{1,1,0,0,0},{1,1,0,0,1},{1,1,0,1,0},{1,1,0,1,1}
,{1,1,1,0,0},{1,1,1,0,1},{1,1,1,1,0},{1,1,1,1,1}};
for(int i=0;i<32;i++){
for(int j=0;j<5;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
后来还是网上搜了一下,看到一个很妙的方法,收藏一下:
for(int j = 0;j < 2 ;j++){
for(int k = 0;k < 2;k++){
for(int m = 0;m < 2;m++){
for(int n = 0;n < 2 ;n++){
System.out.println(i+""+j+""+k+""+m+""+n);
}
}
}
}
}
运行结果如下: