创建大小为n的布尔数组的所有可能方式?

Fischerk12

我需要能够创建一个组合的布尔数组,并通过程序运行它以查看它是否有效。如果没有,我将其丢弃并转到下一个组合。我的问题是我不知道如何创建此数组,因为n可以等于1-1000。所以我打算使用Integer.toBinaryString,但是由于它超过32岁时太大,因此无法使用。任何帮助都将非常有用。

谢谢!

SGal

“已接受的答案”指出:

经过测试,这将适用于较高的n值,例如10000等。

但这是不正确的

public static void main(String[] args) {
    final int n = 3;
    for (int i = 0; i < Math.pow(2, n); i++) {
        String bin = Integer.toBinaryString(i);
        while (bin.length() < n)
            bin = "0" + bin;
        char[] chars = bin.toCharArray();
        boolean[] boolArray = new boolean[n];
        for (int j = 0; j < chars.length; j++) {
            boolArray[j] = chars[j] == '0' ? true : false;
        }
        System.out.println(Arrays.toString(boolArray));
    }
}

n > 31它将永远循环,将重复前2 ^ 31个组合,因为i它将溢出并且永远不会到达Math.pow(2, n)您可以轻松地用

public static void main2(String[] args){
        int n = 32;
        for (int i = 0; i < Math.pow(2, n); i++){
            if (i == Integer.MIN_VALUE) {
                // i overflows
                System.out.println("i exceeded Integer.MAX_VALUE");
            }
        }
    }

上面的代码将无限期地打印,i exceeded Integer.MAX_VALUE但是可以使用BigInteger循环的类似数据结构或类似的数据结构轻松地纠正此问题以下代码适用于n <= Integer.MAX_VALUE

public static void main(String[] args) {
    final int n = 32;
    BigInteger bi = BigInteger.ZERO;
    BigDecimal rows = new BigDecimal(Math.pow(2, n));
    while (bi.compareTo(rows.toBigInteger()) < 0) {
        String bin = bi.toString(2);//Integer.toBinaryString(i);
        while (bin.length() < n)
            bin = "0" + bin;
        char[] chars = bin.toCharArray();
        boolean[] boolArray = new boolean[n];
        for (int j = 0; j < chars.length; j++) {
            boolArray[j] = chars[j] == '0' ? true : false;
        }
        System.out.println(Arrays.toString(boolArray));
        bi = bi.add(BigInteger.ONE);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 Python3 中创建大小为 n 的布尔数组的所有可能方式

来自分类Dev

在 Java 中打印大小为 n 的给定整数数组中 r 个元素的所有可能排列

来自分类Dev

从大小为n的数组中打印大小为r的所有组合

来自分类Dev

从大小为n的数组中打印大小为r的所有组合

来自分类Dev

在Matlab中从n个向量创建所有可能的n元组,并以特定方式排序

来自分类Dev

如何遍历从所有可能的b位数组中选择n个b位数组的所有方式?

来自分类Dev

将布尔数组中的所有值设置为true

来自分类Dev

将布尔数组中的所有值设置为true

来自分类Dev

创建将n个用户划分为k个组的所有可能方式

来自分类Dev

R从n个元素的字符向量生成大小为m的所有可能组合

来自分类Dev

R从n个元素的字符向量中生成大小为m的所有可能组合

来自分类Dev

生成n个变量的所有可能布尔函数的算法

来自分类Dev

从数组中获取大小为n的所有组合的算法(Java)?

来自分类Dev

在C ++中,大小为n的布尔数组的声明是否保证对于每个arr [n]为0?

来自分类Dev

如何以所有可能的方式排列数组中的项目?

来自分类Dev

生成动态大小为d的所有可能组合?

来自分类Dev

生成动态大小为d的所有可能组合?

来自分类Dev

从一组数组中递归地检索所有可能的组合。数组大小和组大小为1-X,其中X不是大数

来自分类Dev

给定每个元素可以采用n个值之一的方式,创建所有可能列表的列表

来自分类Dev

在编译之前创建大小为 N 的数组

来自分类Dev

创建大小为变量的数组

来自分类Dev

从两个数组创建所有可能的组合

来自分类Dev

创建所有可能的数组排序案例

来自分类Dev

根据给定的条件找出2D布尔数组的所有可能组合(使用Java)

来自分类Dev

列出PHP中布尔值的php数组中所有可能的组合

来自分类Dev

根据给定的条件找出2D布尔数组的所有可能组合(使用Java)

来自分类Dev

列出PHP中布尔值的php数组中所有可能的组合

来自分类Dev

满足Haskell条件的所有大小为N的子集

来自分类Dev

满足Haskell条件的所有大小为N的子集

Related 相关文章

  1. 1

    在 Python3 中创建大小为 n 的布尔数组的所有可能方式

  2. 2

    在 Java 中打印大小为 n 的给定整数数组中 r 个元素的所有可能排列

  3. 3

    从大小为n的数组中打印大小为r的所有组合

  4. 4

    从大小为n的数组中打印大小为r的所有组合

  5. 5

    在Matlab中从n个向量创建所有可能的n元组,并以特定方式排序

  6. 6

    如何遍历从所有可能的b位数组中选择n个b位数组的所有方式?

  7. 7

    将布尔数组中的所有值设置为true

  8. 8

    将布尔数组中的所有值设置为true

  9. 9

    创建将n个用户划分为k个组的所有可能方式

  10. 10

    R从n个元素的字符向量生成大小为m的所有可能组合

  11. 11

    R从n个元素的字符向量中生成大小为m的所有可能组合

  12. 12

    生成n个变量的所有可能布尔函数的算法

  13. 13

    从数组中获取大小为n的所有组合的算法(Java)?

  14. 14

    在C ++中,大小为n的布尔数组的声明是否保证对于每个arr [n]为0?

  15. 15

    如何以所有可能的方式排列数组中的项目?

  16. 16

    生成动态大小为d的所有可能组合?

  17. 17

    生成动态大小为d的所有可能组合?

  18. 18

    从一组数组中递归地检索所有可能的组合。数组大小和组大小为1-X,其中X不是大数

  19. 19

    给定每个元素可以采用n个值之一的方式,创建所有可能列表的列表

  20. 20

    在编译之前创建大小为 N 的数组

  21. 21

    创建大小为变量的数组

  22. 22

    从两个数组创建所有可能的组合

  23. 23

    创建所有可能的数组排序案例

  24. 24

    根据给定的条件找出2D布尔数组的所有可能组合(使用Java)

  25. 25

    列出PHP中布尔值的php数组中所有可能的组合

  26. 26

    根据给定的条件找出2D布尔数组的所有可能组合(使用Java)

  27. 27

    列出PHP中布尔值的php数组中所有可能的组合

  28. 28

    满足Haskell条件的所有大小为N的子集

  29. 29

    满足Haskell条件的所有大小为N的子集

热门标签

归档