在Java中组合6组2个元素

时间:2014-04-11 19:34:34

标签: java algorithm combinations

1我正在制作一个“虚拟键盘”,用于在Java中输入密码。

密码必须有6个数字字符,每个按钮有2个可能的值。 因此,每个按下的键有2个值。

例如:按下6个按钮后,我有一个包含6个对象的数组,每个对象分别代表密码的每个字符的可能值:

(1,5)for char1
(3,2)for char2
(7,4)for char3
(1,5)for char4
(9,0)为char5
(8,6)for char6

如何使用这些条目制作6位数字符串的所有组合? (我猜这将是64种组合:26)

有效组合的示例:

137198
537198个
127198个
537196个

依旧......

2 个答案:

答案 0 :(得分:2)

给定n个按钮的序列,其中每个按钮可以假设2个值,这个问题减少到从0到2 ^ n-1的计数,因为你可以将位置i的每个位解释为每个按钮可以假设的两个值之一。对于n = 3:

000 -> 137
001 -> 134
010 -> 127
011 -> 124
100 -> 537
...

因此只需从0到2 ^ 6计数,您就会自动获得解决方案。

这与生成一组n个元素的2 ^ n个子集的方法相同。

答案 1 :(得分:1)

只需创建每个可能的组合并检查它们是否都是正确的