微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用蛮力生成所有可能的二进制数字组合作为数组吗?

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

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

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

解决方法

首先,您需要提供代码的最小可复制示例。您可以在此处查看:https://stackoverflow.com/help/minimal-reproducible-example

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

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});
                }
            }
        }
    }
}

您可以像这样打印它们:

for (var c : combinations) 
{
    System.out.printf("{%d,%d,%d}%n",c[0],c[1],c[2]);
}
,

这应该给您一个想法:

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();
    }


}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。