Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用蛮力生成所有可能的二进制数组合作为数组?_Java_Arrays_Brute Force - Fatal编程技术网

Java 使用蛮力生成所有可能的二进制数组合作为数组?

Java 使用蛮力生成所有可能的二进制数组合作为数组?,java,arrays,brute-force,Java,Arrays,Brute Force,我想使用蛮力算法来生成{0,1}作为数组的所有可能组合。 例如,我想生成2^3个不同组合的二进制数数组,应该是 {{0,0,0}, {1,0,0}, {0,1,0}, {0,0,1}, {1,1,0}, {0,1,1}, {1,0,1}, {1,1,1}} 如何在java中使用蛮力生成这些数组?如果我的问题不清楚,请告诉我,谢谢 首先,您需要提供代码的最小可复制示例。您可以在这里查看: 关于您的问题,使用三个循环可以是一个解决方案: import java.util.ArrayList; p

我想使用蛮力算法来生成{0,1}作为数组的所有可能组合。 例如,我想生成2^3个不同组合的二进制数数组,应该是

{{0,0,0},
{1,0,0},
{0,1,0},
{0,0,1},
{1,1,0},
{0,1,1},
{1,0,1},
{1,1,1}}

如何在java中使用蛮力生成这些数组?如果我的问题不清楚,请告诉我,谢谢

首先,您需要提供代码的最小可复制示例。您可以在这里查看:

关于您的问题,使用三个循环可以是一个解决方案:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        var combinations = new ArrayList<int[]>();
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                for (int k = 0; k < 2; k++) {
                    combinations.add(new int[] {i, j, k});
                }
            }
        }
    }
}

这应该给你一个想法:

import java.util.Arrays;
import java.util.Scanner;

public class BruteForceBinary {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("How many rows do you want? ");
        int rows = scanner.nextInt(); 
        int finalNumber = (int) (Math.pow(2, rows)-1); 
        for (int i = 0; i <=finalNumber; i++ )
        {
            int[] binaryArray = numberToBinaryArray(i,rows);
            
            System.out.print(Arrays.toString(binaryArray));
        }
    }

    private static int[] numberToBinaryArray(int i, int rows ) {
        String binaryString = padLeftZeros(Integer.toBinaryString(i), rows);
        int[] numbers = new int[binaryString.length()];
        for (int j = 0; j < binaryString.length(); j++ ) {
            numbers[j] = Integer.parseInt(String.valueOf(binaryString.charAt(j)));
        }
        return numbers;
    }
    
    private static String padLeftZeros(String inputString, int length) {
        if (inputString.length() >= length) {
            return inputString;
        }
        StringBuilder sb = new StringBuilder();
        while (sb.length() < length - inputString.length()) {
            sb.append('0');
        }
        sb.append(inputString);
     
        return sb.toString();
    }


}
导入java.util.array;
导入java.util.Scanner;
公共类BruteForceBinary{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
System.out.print(“您想要多少行?”);
int rows=scanner.nextInt();
int finalNumber=(int)(Math.pow(2,行)-1);
for(int i=0;i=length){
返回输入字符串;
}
StringBuilder sb=新的StringBuilder();
while(sb.length()
我不确定直接回答那些在提问之前似乎没有尝试过的人是什么感觉…@Musilix我编辑了这个问题,建议OP提供一个最低限度的可复制代码示例。对于没有提供足够的关于我的问题的信息,我深表歉意。下一次,我将通过阅读如何在StackOverflow中提出好问题的规则来做得更好。不过,非常感谢您的帮助。从1到7的循环就可以做到这一点。
import java.util.Arrays;
import java.util.Scanner;

public class BruteForceBinary {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("How many rows do you want? ");
        int rows = scanner.nextInt(); 
        int finalNumber = (int) (Math.pow(2, rows)-1); 
        for (int i = 0; i <=finalNumber; i++ )
        {
            int[] binaryArray = numberToBinaryArray(i,rows);
            
            System.out.print(Arrays.toString(binaryArray));
        }
    }

    private static int[] numberToBinaryArray(int i, int rows ) {
        String binaryString = padLeftZeros(Integer.toBinaryString(i), rows);
        int[] numbers = new int[binaryString.length()];
        for (int j = 0; j < binaryString.length(); j++ ) {
            numbers[j] = Integer.parseInt(String.valueOf(binaryString.charAt(j)));
        }
        return numbers;
    }
    
    private static String padLeftZeros(String inputString, int length) {
        if (inputString.length() >= length) {
            return inputString;
        }
        StringBuilder sb = new StringBuilder();
        while (sb.length() < length - inputString.length()) {
            sb.append('0');
        }
        sb.append(inputString);
     
        return sb.toString();
    }


}