Java:给出数字N的true和false组合的生成器;

我尽可能简化任务,所以我可以将它应用到我的算法中.

这是数学家和程序员面临的挑战:

我需要创建一个传递参数int n的方法:

public void optionality_generator(int n){
  //some kind of loops, or recursions...to make it workable
  System.out.println("current combination: ...");
}

输出应显示true和false的所有可能组合.

这是N = 1的例子; N = 2; N = 3; N = 4; N = 5,其中x =假,0 =真;请注意,空的断线只是为了让您更容易识别图案.希望我包括所有可能的组合):

Combination of 1:
0
x

Combination of 2:
00
x0
0x
xx

Combination of 3:
000
X00
0X0
00X
XX0
0XX
XXX

Combination of 4:
0000

X000
0X00
00X0
000X

XX00
X0X0
X00X

0XX0
0X0X

00XX

XXX0
XX0X
X0XX
0XXX

XXXX

Combination of 5:
00000
X0000
0X000
00X00
000X0
0000X

XX000
X0X00
X00X0
X000X

X0X00
X00X0
X000X

0XX00
0X0X0
0X00X

00XX0
00X0X

000XX

XXX00
XX0X0
XX00X

X0XX0
X0X0X
X00XX

0XXX0
0XX0X

00XXX

XXXX0
XXX0X
XX0XX
X0XXX
0XXXX

XXXXX

此外,如果您看到输出,这是我识别的模式,所有组合都反转一半(例如,第一个组合是00000,最后一个将是XXXXX,第二个是X0000,一个在最后一个之前将是0XXXX等…) .也许,这种模式将有助于使整个算法更有效,不确定这一点.
先感谢您!

解决方法:

这是一种仅使用Java API的基本方法:

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;
    System.out.println(bin);
}

结果:

000
001
010
011
100
101
110
111

当然,您可以将n设置为您喜欢的任何内容.并且,通过此结果,您可以从字符串中选择第n个字符为true / false.

如果您只需检查某位是否为真,则无需将其转换为字符串.这只是为了说明输出值.

上一篇:php – 所有可能的放置, – 或数字之间没有任何东西得到总和等于100


下一篇:python – 如何生成列表组合?