Java 排列算法解决方法
Java 排列算法
现在要计算一个,总共有10位数,每一位只有0和1,现在想排列出所有的组合。
例如 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
那位大神有兴趣的,帮忙研究一下,先考虑准确性,再考虑算法。
------解决方案--------------------
for(int i=0;i<1024;i++)
{
String s = Integer.toBinaryString(i);
System.out.println(s);
}
------解决方案--------------------
我还没有想出来,但是感觉可以往这个方向想,我先写出来,看能不能给后面的同学一些启发:
因为只有0,1两种数字,因此可以先统计一下0和1的个数,最坏的情况是5,5分
如果只有1个0或者一个1
则排列只有10种,只要把这个单独的0或者1放好就行了
如果有2个0或者1
则排列有10*9种,把这两个数字位置放好其他的就放好了
依次类推
最坏的情况是5个0和5个1
排列有 10*9*8*7*6种
问题的关键是如何放置这些数字,还在思考当中
------解决方案--------------------
只有 0,1不就是2进制?.循环+1,转为二进制。再补0
------解决方案--------------------
for(int i=0;i<1024;i++)
{
String str = Integer.toBinaryString(i);
for(int j=0,k=str.length();j<10-k;j++){
str = "0" + str;
}
System.out.println(str);
}
------解决方案--------------------
int count = 0;
for(int i =1; i <10;i++){
int top = 1;
for(int j = 10; j >=10 -(i-1); j--){
top *= j ;
}
int bottom = 1;
for(int k= 1; k <=i ; k++){
bottom *= k;
}
count += top/bottom;
}
------解决方案--------------------
现在要计算一个,总共有10位数,每一位只有0和1,现在想排列出所有的组合。
例如 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
那位大神有兴趣的,帮忙研究一下,先考虑准确性,再考虑算法。
------解决方案--------------------
for(int i=0;i<1024;i++)
{
String s = Integer.toBinaryString(i);
System.out.println(s);
}
------解决方案--------------------
我还没有想出来,但是感觉可以往这个方向想,我先写出来,看能不能给后面的同学一些启发:
因为只有0,1两种数字,因此可以先统计一下0和1的个数,最坏的情况是5,5分
如果只有1个0或者一个1
则排列只有10种,只要把这个单独的0或者1放好就行了
如果有2个0或者1
则排列有10*9种,把这两个数字位置放好其他的就放好了
依次类推
最坏的情况是5个0和5个1
排列有 10*9*8*7*6种
问题的关键是如何放置这些数字,还在思考当中
------解决方案--------------------
只有 0,1不就是2进制?.循环+1,转为二进制。再补0
------解决方案--------------------
for(int i=0;i<1024;i++)
{
String str = Integer.toBinaryString(i);
for(int j=0,k=str.length();j<10-k;j++){
str = "0" + str;
}
System.out.println(str);
}
------解决方案--------------------
int count = 0;
for(int i =1; i <10;i++){
int top = 1;
for(int j = 10; j >=10 -(i-1); j--){
top *= j ;
}
int bottom = 1;
for(int k= 1; k <=i ; k++){
bottom *= k;
}
count += top/bottom;
}
------解决方案--------------------
for (int i = 0; i < 1024; i++) {
String s = StringUtils.leftPad(Integer.toBinaryString(i), 8, "0");
System.out.println(s);
}