【问题标题】:int array: fill with all combinations of numbers from one to a give numberint 数组:填充从 1 到给定数字的所有数字组合
【发布时间】:2015-06-03 21:37:42
【问题描述】:

这是我的第一篇文章,所以我会尽量让它清晰易懂。

我需要一些帮助来编写一个方法,该方法应该用从一个到给定值的所有数字组合填充一个 int [] (1D)。每次都可以覆盖这些值。举个例子。如果数组长度为 3,我希望数组的进程看起来像这样:

111、211、121、112、221、122、212、222、311、113、131、321、132、231、 ......

我认为分解它的最佳方法可能是忘记顺序(因此,如果数组是 211,则不需要 112),然后有一个单独的方法来置换数组和每个步骤。 所以我要创建的方法只需要使数组演变成这样:

111 211 221 222 311 321 322 332 333

然后我可以简单地在每个数组状态之间运行 permute 方法。

我设法制作了一个显示:

111 211 112 121 221 122 212 222 322 223 232 332 233 323 333 第433章……

这有所有的排列(这对于我现在要做的事情并不是必不可少的)但是当我编码它时,我并没有让数字实际上返回并涵盖每个组合(例如:311)(差异我的数组中的数字之间每次只有一个)

一些背景信息:我正在制作一个程序,通过在每个化合物前面添加正确的化学计量系数来平衡化学反应。 例如:_H20 + _02 = _H2O2

和 _ 表示系数的位置。 我有一个有效的方法来检查方程是否平衡,我需要设法尝试每个常数组合,直到方程平衡(或直到达到极限)。所以我决定用一个 int[] 来做这个,并从数组中填充方程系数。

如果有人感兴趣,我愿意发布有关我的程序的更多信息或详细信息,如果它可能有助于回答我的问题。

谢谢,期待您的回答/意见。

祝你好运!

【问题讨论】:

  • 好的,到目前为止,您尝试了什么?您遇到的具体问题是什么?如果你有一些代码,你应该发布它。
  • “我设法制作了一个显示...的方法” 我们可以看到这个方法吗?
  • 我查看了我的代码并意识到它甚至没有给出所有排列。我不能发布代码,因为它真的很杂乱而且写在 main 方法中,它还依赖于其他一些方法和类,我试图把它整理一下,以便更好地将它分成不同的方法,每个方法都有它们的用途,我认为它如果我重新启动并发布我管理的代码会更好。我想我也应该提供一些背景信息来说明我为什么想要这个数组;我将用这个编辑我的主要帖子。

标签: java arrays algorithm int combinations


【解决方案1】:

我不确定 java 是否有 next_permutation 方法,但在 c++ 中,使用此函数很容易,这是您可以使用 c++ 实现的指南,希望对您有所帮助。这是链接:http://www.cplusplus.com/reference/algorithm/next_permutation/

不过你也可以看看这个博客:http://codeforces.com/blog/entry/3980这个解释很清楚你想做什么。

【讨论】:

  • 感谢您的回答,但是我遇到的问题是没有找到排列,我已经通过将数组中整数的位置移动适当的时间(长度为数组)并且这部分代码有效。我遇到困难的部分在我的主要帖子中进行了解释。从顶部算起的第 5 行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多