【问题标题】:How to generate repetitive permutations?如何生成重复排列?
【发布时间】:2020-12-10 11:09:17
【问题描述】:

我正在尝试生成具有 n 位 2 个字符串的排列。例如,我有 2 两种类型的字符串,“A”“B.”。 n 是字符串的总长度。它总是在变化。有时是 5、6 等。我想重复打印所有可能的结果。例如,

如果 n=5 AAAAA AAAAB AAABB AABBB …… 阿巴巴 …… BBBBB

我的总组合是 2^5=32。

如果 n=6 AAAAAA AAAAAB AAAABB AAABBB …… ABAA …… BBBBBB

我的总组合是 2^6=64。

如何在 VB.net 中编写此代码?

【问题讨论】:

  • 请与我们分享您是如何尝试解决您的问题的以及您在哪里卡住了。
  • 你的价值观“A”“B”总是独一无二的吗?
  • 假设他们是,请参阅my previous solution 了解一种可能性。
  • 在你尝试打印出来之前,我会得到可能的排列数量。手动计算。
  • 是的,我的价值观一直都是一样的,他们永远不会改变也许以后,可以添加新的价值观

标签: arrays vb.net iteration combinations permutation


【解决方案1】:

使用来自hereRevision 类:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Rev As New Revision("AB", "AAAAAA")
    Dim Length As Integer = Rev.CurrentRevision.Length

    Dim results As New List(Of String)
    While Rev.CurrentRevision.Length = Length
        results.Add(Rev.CurrentRevision)
        Rev.NextRevision()
    End While

    ListBox1.DataSource = Nothing
    ListBox1.DataSource = results
End Sub

对于更大的集合,一定要使用我链接示例中的某种线程!

我还强烈推荐 Adrian Akison 的 Combinatoricsfound here

【讨论】:

  • 感谢回答,会有更大的集合,比如12位。所以我正在使用这个
猜你喜欢
  • 2014-03-15
  • 2022-08-18
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2016-10-01
  • 1970-01-01
相关资源
最近更新 更多