Java中数字的所有二进制组合的列表

Sha*_*aju 3 java algorithm binary combinations

我正在开展一个涉及"动态编程"的项目,我对这个微不足道的事情感到震惊,请帮忙.

假设我将4作为输入,我想显示类似于:0000到1111的内容

但是,如果我输入5,我想显示如下:00000到11111,依此类推.

提前致谢,

编辑:请不要发布问我代码.这不是一个家庭作业问题,我不需要任何代码,只需告诉我它的逻辑,我会很高兴.

EDIT2:WTH正在发生Stackoverflow,我问过你们有没有为我编写代码?我希望那个投票赞成它的人.如果我不能帮忙,这个论坛有什么意义?

与我分享逻辑.我们可以讨论,我不需要这个代码.

编辑3:我在这里发布我尝试过的代码.我希望这个"满意"所有想到我没有尝试过的人.

import java.util.ArrayList;
Run Code Online (Sandbox Code Playgroud)

公共类RegularInvestigator {

public ArrayList createCombinations(ArrayList listOfFlightNumbers){

ArrayList<String> result = new ArrayList<String>();

for(int i = 1; i < listOfFlightNumbers.size(); i++) {

  String binaryEqvivalent = Integer.toBinaryString(i);System.out.println(binaryEqvivalent);
  String element = "";

  for(int j = 0; j < binaryEqvivalent.length(); j++)
    if(binaryEqvivalent.charAt(j) == '1')
      element += listOfFlightNumbers + " ";

  result.add(element.substring(0, element.length() - 1));
}

return result;
Run Code Online (Sandbox Code Playgroud)

}

private String getContent(ArrayList<String> flight) {
String temp = "";

for(int i = 0; i < flight.size() - 1; i++)  temp += flight.get(i) + " ";

temp += flight.get(flight.size() - 1);

return temp;
Run Code Online (Sandbox Code Playgroud)

}

private ArrayList removeElementAtIndex(ArrayList flight,int position){

ArrayList<String> res = new ArrayList<String>();

for(int i = 0; i < flight.size(); i++) {
  if(i != position) res.add(flight.get(i));
}

return res;
Run Code Online (Sandbox Code Playgroud)

}}

编辑4:谢谢phoxis,PengOne,Jerry Coffin和oliholz的宝贵答案:)

pho*_*xis 8

  • 获得输入 n
  • i=0(2^n) - 1
  • 对于i位掩码的每个值和每个位的i显示.

  • 使用`&`运算符?mask = 0x01和i =计数,并在每次迭代时离开移动掩码并执行掩码&i如果结果为true则打印1 else print 0 (2认同)

oli*_*olz 8

public void outBinary(int value){
   for (int i = 0; i < Math.pow(2, value); i++) {
       System.out.println(Integer.toBinaryString(i));
   }
}
Run Code Online (Sandbox Code Playgroud)

带有前导零的东西

    for (int i = 0; i < Math.pow(2, value); i++) {
        StringBuilder binary = new StringBuilder(Integer.toBinaryString(i));
        for(int j = binary.length(); j < value; j++) {
            binary.insert( 0, '0' );
        }
        System.out.println(binary);
    }
Run Code Online (Sandbox Code Playgroud)