我有 n 个包含项目的输入列表。 现在我想计算包含原始输入列表中所有项目组合的结果列表(长度为 n)(每个输入列表取一个项目)。
我想我应该在这里提供一个例子(n=3):
inputList1: [item1, item2, item3]
inputList2: [item4]
inputList3: [item5, item6]
resultList1: [item1, item4, item5]
resultList2: [item1, item4, item6]
resultList3: [item2, item4, item5]
resultList4: [item2, item4, item6]
resultList5: [item3, item4, item5]
resultList6: [item3, item4, item6]
我感觉有点傻,但我不知道如何实现 (C++) 函数来为任何 n 和任何 inputList 长度创建这些结果。我想我应该使用某种递归,但我不知道如何。
有什么想法吗?
最佳答案
一般的想法,用伪代码:
vector<item> List1, List2, List3;
// fill the lists
vector<item> v;
vector<vector<item>> results;
for each item i in List1
{
v.push_back(i)
for each item j in List2
{
v.push_back(j);
for each item k in List3
{
v.push_back(k);
results.push_back(v);
v.pop_back();
}
v.pop_back();
}
v.pop_back();
}
要在可变数量的列表上执行此操作,我会采用递归方法。然后每个 for 循环将被替换为递归函数调用。此函数需要接受您的 inputList
列表、结果列表和存储中间结果的容器(上例中的 v
)作为参数。
希望对您有所帮助。
关于c++ - 查找列表项的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10501800/