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个
依旧......
答案 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)
只需创建每个可能的组合并检查它们是否都是正确的