相关疑难解决方法(0)

std :: next_permutation实现说明

我很好奇如何std:next_permutation实现,所以我提取了gnu libstdc++ 4.7版本并清理了标识符和格式以生成以下演示...

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

template<typename It>
bool next_permutation(It begin, It end)
{
        if (begin == end)
                return false;

        It i = begin;
        ++i;
        if (i == end)
                return false;

        i = end;
        --i;

        while (true)
        {
                It j = i;
                --i;

                if (*i < *j)
                {
                        It k = end;

                        while (!(*i < *--k))
                                /* pass */;

                        iter_swap(i, k);
                        reverse(j, end);
                        return true;
                }

                if (i == begin) …
Run Code Online (Sandbox Code Playgroud)

c++ permutation lexicographic stl-algorithm c++11

100
推荐指数
4
解决办法
3万
查看次数

如何在c ++中避免这种for循环混乱?

我需要从号码的所有可能方案集合1N一个任意数量的m整数无置换.

由于我不知道如何更好地解释它,这里有一些例子:

对于 m = 2

vector<vector<int>> box;    
int N = 5;

for(int i = 1; i <= N; i++) {
    for(int j = N; j >= i; j--) {
        vector<int> dummy;
        dummy.push_back(i);
        dummy.push_back(j);
        box.push_back(dummy);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于 m = 3

vector<vector<int>> box;    
int N = 5;  

for(int i = 1; i <= N; i++) {
    for(int j = N; j >= i; j--) {
        for(int k = N; k >= j; k--) { …
Run Code Online (Sandbox Code Playgroud)

c++ for-loop

10
推荐指数
1
解决办法
288
查看次数