2

我正在尝试考虑一种算法,我可以为我的推理引擎实现创建许多可能的二进制组合

简而言之,如果我的程序的输入文件有 4 个不同的变量,我的程序应该能够生成

0000 0001 0010 。. . 1111

组合....到目前为止,我解决这个问题的方法如下,这只是一个想法,因为它目前是硬编码的......基本上我需要算法来为任何给定数量的变量“n”生成这个。

到目前为止我的代码...

public class TTAlgorithm {

    public static void main(String[] args) {
        Integer j = new Integer(10);

        for (int i = 0; i < 4096; i++) {
            if (j.toBinaryString(i).length() == 1) {
                System.out.println("0000000000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 2) {
                System.out.println("000000000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 3) {
                System.out.println("00000000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 4) {
                System.out.println("0000000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 5) {
                System.out.println("000000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 6) {
                System.out.println("00000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 7) {
                System.out.println("0000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 8) {
                System.out.println("000" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 9) {
                System.out.println("00" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 10) {
                System.out.println("0" + j.toBinaryString(i));
            }

            if (j.toBinaryString(i).length() == 11) {
                System.out.println("" + j.toBinaryString(i));
            }
        }

    }
}

谢谢你的帮助....

4

2 回答 2

4

这应该工作...

public static void main(String[] args) throws Exception {
        int count = 0;

        int stringSize = 4;
        int maxValue= (int)Math.pow(2, stringSize);

        while(count < maxValue) {
            String binaryString = Integer.toBinaryString(count);

            while(binaryString.length() < stringSize) {
                binaryString = "0" + binaryString;
            }

            System.out.println(binaryString);
            count++;
        }

    }

输出是...

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

把它放在一个方法中,并让该方法接受一个参数“stringSize”或任何你想调用它的东西。

于 2011-05-14T18:29:17.157 回答
1

请参阅递增数组值 - Arduino以获得非常简单的解决方案。

于 2011-05-14T18:37:45.023 回答