Java 算法数的组合变量(类似于位串算法)

标签 java combinations bitstring

我有一个问题想用 Java 解决,但我无法弄清楚我需要遵循的算法。这个问题类似于位串问题(有多少个长度为 x 的位串),但难度更大。无论如何,我什至不确定解决普通位串问题的算法。

所以这是我的实际问题: 我有 5 个变量。说 Q W X Y Z。每个变量可以取 3 个值之一(所以像位串可以取 1 或 0,但这可以取 0、1 或 2)。我需要生成此“位串”的所有可能组合。

所以一个组合可能是 00000,另一个可能是 10002,另一个可能是 22222,等等。我需要打印出这个“位串”的所有组合

我真的很困惑如何解决这个问题,甚至想出一个像样的算法。

感谢您的帮助!非常感谢。

最佳答案

您需要考虑其背后的数学。当您了解如何枚举这些字符串后,事情就会变得容易得多。这将产生一种明显的方法,不仅可以生成 字符串,还可以让您“随机访问”它们,即您还可以编写一个 get(int num) 方法这将产生第 num 个元素。

数学非常简单,它只涉及模运算 (%) 和除法,当您自己解决这个问题时,它真的会有返回。

作为一个简单的初步准备,假设您有 n 个十进制数字。

  • 给定一个数字 x,如何得到第 n 位?
  • 给定 n 个数字,你如何得到数字 x

弄清楚这一点后,尝试从 10 数字中抽象出来。说,练习二进制计数。然后是三进制,这将是你的 3 位数的解决方案。

关于Java 算法数的组合变量(类似于位串算法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12334397/

相关文章:

java - 关于简单计算器中的布局

python - 如何在给定条件下生成所有可能的组合以使其更有效?

python itertools.combinations 已删除

python - 如何将 BitString 转换为 ctypes 字节数组?

c - C 中的位串

java - Vaadin 中的 BeanFieldGroup 以 List<String> 作为逗号分隔的条目

java - @Autowired 与 XML

java - 如何使输入更改正在设置的字符串?

c++ - 组合的快速排名/取消排名(64 位)

elixir - 在 Elixir 中使用 pin 运算符匹配位串的模式