gpt4 book ai didi

c++ - 遍历 multiset 元素的所有组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:20 31 4
gpt4 key购买 nike

我需要找到树中的最佳路径,树是multiset 元素的所有可能组合。例如对于这个 multiset:A - B - C,树将由所有 6 种可能的组合组成:A - B - C |A - C - B |B - A - C |B - C - A |C - A - B |C-B-A

enter image description here

我只想使用多重集遍历这棵树,

像这样:

// I think this must be initialized, but that is not a problem
Path bestPath;

for (mySet::iterator i(aSet.begin()), e(
aSet.end()); i != e; ++i) {
Path path = someRecursiveFunction(*i);
if(criteria(bestPath,path))
bestPath = path;
return bestPath;
}

someRecursiveFunction 可能必须相同,但是循环其余的值,我不想在每个节点中创建一个多重集并将其余的放在上面,因为节点的数量是多重集大小的阶乘,我找不到执行此操作的好方法...

最佳答案

创建一个std::vector如下 std::vector<char> set ={A,B,C}并在 vector 之上调用 std::next_permutation 以获取所有排列

std::next_permutation( std::begin(set), std::end(set));

do {
//your code for algorithm
for( auto & x : set)
std::cout<<x<<" ";
std::cout<<"\n";
} while( std::next_permutation( std::begin(set), std::end(set));

关于c++ - 遍历 multiset 元素的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629900/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com