【问题标题】:Combining 6 sets of 2 elements in Java在Java中组合6组2个元素
【发布时间】:2015-06-29 06:45:08
【问题描述】:

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

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

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

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

如何将 6 位字符串与这些条目进行所有组合? (我猜这将是 64 种组合:2^6)

有效组合示例:

137198
537198
127198
537196

等等……

【问题讨论】:

  • 你可以使用这个link
  • 不这么认为。我没有置换所有元素。我为每个字符组合了两个元素。女巫会给我2^6种组合...
  • 同一个按钮可以按多次吗?
  • 这似乎很容易用递归解决,你试过了吗?
  • 是的,谢谢,我的错

标签: java algorithm combinations


【解决方案1】:

给定一系列 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 个子集的方式相同。

【讨论】:

  • 所以在获得所有 2^6 个数字之后,我必须遍历每个数字的每一位,生成一个字符串?
  • 好吧,我会增加计数器并生成字符串。无需在内存中保留 2^6 个数字!
【解决方案2】:

创建所有可能的组合并检查它们是否正确

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2021-09-19
    • 2017-09-25
    • 2012-01-14
    • 1970-01-01
    相关资源
    最近更新 更多