【发布时间】:2018-09-06 15:29:08
【问题描述】:
我有一个 List<List<string>> 代表行和列的网格(每个的计数是动态的)。
我需要遍历项目并在一个方向上显示所有可能的组合。
如果我有以下物品,例如:
var items = new List<List<string>>
{
new List<string> {"A", "B", "C", "D"},
new List<string> {"E", "F", "G", "H"},
new List<string> {"I", "J", "K", "L"},
};
输出应该是:
---> *ABCD-ABCH-ABCL-ABGD-ABGH-ABGL-ABKD-ABKH-ABKL-........... IJKL*.
如何遍历列表以实现此结果?
【问题讨论】:
-
我会建议你改变你的数据结构,也许使用 graph 来促进你的搜索和优化你的性能
-
就像你看到的here,获得所有组合并不是那么简单。当您告诉我们您为什么要实现这一目标时,也许会更容易。
-
为什么 ABCH 在 ABCD 而不是 ABCE 之后?
-
您能详细解释一下要求吗?考虑到所有字母,是否所有长度为 4 的组合?您的列表是否可以包含重复,如果是,它们是否算作不同的字母? “一个方向的所有可能组合”是什么意思?
-
我注意到组合的数量增长得非常快。在这个简单的例子中,只有 81 种组合,但如果你有 3 行 10 列而不是 4 列,则几乎有 60000 种组合,而 10 行 10 列有十万亿种组合。 cmets 指出这可能是解决您的问题的糟糕技术是正确的。