C++ next_permutation如何避免重复结果

   2024-10-06 8940
核心提示:在使用C++中的next_permutation函数生成排列时,可以通过在循环中添加判断条件来避免重复结果。可以将生成的排列存储在一个集合

在使用C++中的next_permutation函数生成排列时,可以通过在循环中添加判断条件来避免重复结果。可以将生成的排列存储在一个集合中,每次生成一个新的排列时,先判断该排列是否已经存在于集合中,如果已经存在,则继续生成下一个排列,直到生成一个不重复的排列为止。

以下是一个示例代码:

#include <iostream>#include <algorithm>#include <vector>#include <set>int main() {    std::vector<int> nums = {1, 2, 2, 3};    std::sort(nums.begin(), nums.end());        std::set<std::vector<int>> result_set;        do {        if (result_set.find(nums) == result_set.end()) {            result_set.insert(nums);                        for (int num : nums) {                std::cout << num << " ";            }            std::cout << std::endl;        }    } while (std::next_permutation(nums.begin(), nums.end()));        return 0;}

在上面的示例中,我们首先将输入数组nums排序,然后使用next_permutation函数生成排列,并将每个排列存储在result_set中。在每次生成一个新的排列时,我们先判断该排列是否已经存在于result_set中,如果不存在,则输出该排列并将其插入到result_set中。这样就可以避免生成重复的排列结果。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号