当前位置: 首页 > 知识库问答 >
问题:

Java:如何输出所有可能的二进制组合(256个不同的序列)?

孟洋
2023-03-14

我需要创建一个函数,输出所有可能的二进制组合(2^8==256个不同的8位序列)。我真的被难住了。我必须用嵌套循环来完成它,但我不知道该怎么做。下面是我到目前为止所尝试的。有人告诉我,我可以用8个嵌套循环来编写这个程序,每个循环从0到1;另外,我可以尝试用位操作操作符来实现这一点。

输出应该如下所示:

00000000

00000001

public static void outputBinary(){

int[][][][][][][][] num = new int[2][2][2][2][2][2][2][2];

    for (int i = 0; i < 2; i++){

    for (int j = 0; j < 2; j++){

    for (int k = 0; k < 2; k++){

    for (int l = 0; l < 2; l++){

    for (int m = 0; m < 2; m++){

    for (int n = 0; n < 2; n++){

    for (int o = 0; o < 2; o++){

    for (int p = 0; p < 2; p++){

        System.out.print(num[i][j][k][l][m][n][o][p]);

    } }}}}}}}

谢谢你找我。

共有1个答案

万俟均
2023-03-14

不需要数组。下面是对您的代码的轻微修改,它将输出所有的排列。

for (int i = 0; i < 2; i++){
  for (int j = 0; j < 2; j++){
    for (int k = 0; k < 2; k++){
      for (int l = 0; l < 2; l++){
        for (int m = 0; m < 2; m++){
          for (int n = 0; n < 2; n++){
            for (int o = 0; o < 2; o++){
              for (int p = 0; p < 2; p++){
                System.out.println("" + i + j + k + l + m + n + o + p);
              }
            }
          }
        }
      }
    }
  }
}

必须使用嵌套循环吗?因为只要利用从0到255的所有数字的二进制表示涵盖了每个排列,这就非常容易了。

for (int i=0; i<256; i++) {
    System.out.println(Integer.toBinaryString(i));
}
 类似资料:
  • 我试图在一个形状为(n,10)的数组中创建所有可能的0和1的组合。例如,如果我们假设一个像这样的任意组合:np.array([0,0,1,1,0,0,1,1,0,0]),我如何生成所有可能的组合(这将产生2^10=1024数组)?

  • 问题内容: 在Python中,如何获取二进制值和的所有组合? 例如,如果我想要 我怎样才能做到这一点? 问题答案: 采用 这将产生一个元组列表(请参阅此处) 您可以轻松地将其更改为使用变量: 如果需要列表列表,则可以使用该功能(感谢@Aesthete)。 或在Python 3中: 请注意,使用或列表理解意味着您无需将产品转换为列表,因为它将迭代对象并产生一个列表。

  • 我正在做一个代码,可以消除不需要的组合,例如我(ABCDE)不想要AAA BBB AB BA只想要ABC ABD ABE ....等等,希望它在任何情况下都有效,我这样做的示例代码:他制作了一组组合 (1-6) 3 对 3 ...但我希望他 (1-15) 与 4 对 4 或 10 到 10 的组合......请参阅示例以更好地理解。 结果 123 124 125 126 134 135 136 1

  • 问题内容: 目前,我试图让所有可能的组合从的,是每一个元素只包含一个字母。 在本身包含相同字母两次甚至更多,他们只应该,因为他们经常会出现使用。 在稍后应该含有最多的给定的长度从最小的2个字母的所有组合。 我在此处搜索了stackoverflow,但只发现了忽略以下事实的置换函数:每个字母仅在出现时才经常使用。 这是我的第一个Swift 2项目,所以请原谅我的绿色态度:) 我想要的是 我目前的做法

  • 问题内容: 我有一个项目{a,b,c,d}的列表,当我需要生成所有可能的组合时, 您可以选择任意数量的项目 顺序不重要(ab = ba) 空集不被考虑 如果我们抓住可能性,那就应该是 我使用了以下递归方法: 当数组大时,有没有更有效的方法? 问题答案: 将组合视为一个二进制序列,如果所有4个都存在,则得到1111,如果缺少第一个字母,则得到0111,依此类推。对于n个字母,我们将得到2 ^ n -