n个列表的字符串组合

时间:2011-02-09 15:31:11

标签: c# .net c++

我想在多个列表中构建所有字符串的所有组合。我有三个要包含的参数。这些是"And""OR""Equal"

例如,我有以下三个列表:

列表1 :“印度”,“中国”,“伊朗”

列表2 :“印地语”,“英语”,“中文”

列表3 :“森林”,“沙漠”,“河”

输出应为

India OR Hindi OR Forest
India AND Hindi AND Forest
India EQUAL Hindi EQUAL Forest
India OR China  OR Hindi
India AND China  AND Hindi
India  EQUAL China  EQUAL Hindi

Iran OR English OR River
Iran AND English AND River
Iran EQUAL English EQUAL River

依旧......

列表中的列表数量和字符串数量不固定。

我更喜欢递归解决方案。

2 个答案:

答案 0 :(得分:1)

我认为您首先需要创建单词的组合,并且最后一步应用它们之间的每个关键字。

对于当前列表中的每个项目,如果列表是最后一个插入所有关键字,则将下一个单词列表递归为当前。

答案 1 :(得分:0)

您只是想创建排列。 Donald E Knuth的“计算机编程艺术第4卷”将是一个阅读理论的好地方,如果你想不出从哪里开始解决方案(我同意其他人认为这看起来像是涉及到一些功课 - 尤其是递归引用。你为什么要递归呢?) 在第4卷中,您需要分册2“生成所有元组和排列”和分册3“生成所有组合和分区”。

我会迭代地而不是递归地接近它。然后,它实际上是循环结果中每个“空格”的每个选项的简单情况。你为什么需要递归?递归只会增加开销。