【问题标题】:Find all possible combinations from multiple arrays [duplicate]从多个数组中查找所有可能的组合[重复]
【发布时间】:2017-11-16 03:04:32
【问题描述】:

我正在尝试编写一个算法,由于我缺乏编写复杂算法的经验,我在这里有点挣扎。因此,在这种情况下,我有 n 个字符数组,每个数组包含 m 个字符。我需要在数组之间生成所有可能的字符组合。

例如,我有以下数组:

arr1 = [2, 3]
arr2 = ['y', 1]
arr3 = [1]
arr4 = [2, 'u', 4]

对于上述数组,所有可能的组合是:

2y12
2y1u
2y14
2112
211u
2114
3y12
3y1u
3y14
3112
311u
3114

可以有任意数量的 n 个数组,每个数组中可以包含任意数量的字符。所以这个算法需要扩展。我在想一个递归解决方案可能是可能的,我只是无法理解它是如何工作的。这个问题与Generating all Possible Combinations 的帖子非常相似,除了我仍然看不到如何使解决方案动态化以处理所述数组中包含任意数量元素的任意数量的数组。

我的解决方案最终将使用 C# 编写,但您可以使用任何其他语言或伪代码帮助我。

【问题讨论】:

标签: c# arrays algorithm


【解决方案1】:
void Dodge(List<List<T>> domains)
{
    Fuski(domains, new List<T>());
}

void Fuski(List<List<T>> domains, List<T> vector)
{
    if (domains.Count == vector.Count)
    {
        Console.WriteLine(string.Join("", vector)); 
        return;
    }
    foreach (var value in domains[vector.Count])
    {
        var newVector = vector.ToList();
        newVector.Add(value);
        Fuski(domains, newVector);
    }
}

【讨论】:

  • u-oh 哇,这是一个很好的解决方案,非常感谢分享!只需将 谓词替换为更好地使用 Join 方法的字符串:)
猜你喜欢
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 2011-08-10
  • 2013-03-03
  • 2013-03-15
相关资源
最近更新 更多