【发布时间】:2016-06-08 18:02:30
【问题描述】:
我有两个大小总是相等的数组,我想找到这两个数组所有可能的组合集。
例如:
var names = new [] { "John", "Alex", "Peter", "Eric" };
var letters = new [] { "A", "B", "C", "D" };
我希望将结果作为字典列表返回:
var combinationSets = new List<Dictionary<string, string>>
{
new Dictionary<string, string>
{ {"John", "A"},
{"Alex", "B"},
{"Peter", "C"},
{"Eric", "D"}},
new Dictionary<string, string>
{ {"John", "B"},
{"Alex", "C"},
{"Peter", "D"},
{"Eric", "A"}},
...
};
编辑:两个数组中的值都不能在字典中重复,例如:
new Dictionary<string, string>
{ {"John", "A"},
{"Alex", "A"},
{"Peter", "C"},
{"Eric", "D"}}
关于如何解决这个问题的任何提示?
编辑: 我不认为可以使用笛卡尔积,因为它会返回
var cartesianProduct= new []
{
new []{ "John", "A" },
new []{ "Alex", "B" },
new []{ "Peter", "C" },
new []{ "John", "D" },
new []{ "John", "B" },
new []{ "Alex", "C" },
new []{ "Peter", "D" },
new []{ "John", "A" },
...
}
【问题讨论】:
-
您尝试过吗?这有家庭作业的味道,不是吗?如果是,您应该阅读guidelines on homework questions,特别是[OP 应该](就是您)真诚地尝试自己先解决问题。您还应该阅读help center
-
您正在寻找的是笛卡尔积。这里有很多解决方案。
-
是的,已经尝试过使用笛卡尔积,但正如我所见,我不会得到一组组合,但只有一个包含两个列表组合的列表,例如:
var cartesianProduct= new []{ new []{ "John", "A" }, new []{ "Alex", "B" }, ... }