相关疑难解决方法(0)

C++中的组合和排列

什么是C++中使用最广泛的现有库来提供n个元素中k个元素的所有组合和排列?

我不是问算法而是现有的库或方法.

谢谢.

c++

32
推荐指数
3
解决办法
2万
查看次数

n中k个元素的所有组合

有人能为我提供一个函数的链接或伪代码,用于查找n中k个元素的所有组合吗?可能在STL.我不需要计算n选择k,我需要列出所有大小为k的数字向量.

谢谢

c++ stl combinatorics

23
推荐指数
2
解决办法
2万
查看次数

这个 next_combination 代码的用法

目前我正在尝试从包含一些整数的向量生成组合。现在我希望它打印出所有长度为 to_generate 的组合。我在 C++中的组合和排列中发现了这段代码,它使用 std::next_permutation 来生成组合。next_combination 代码如下:

template<class RandIt, class Compare>
bool next_combination(RandIt first, RandIt mid, RandIt last, Compare comp)
{
    std::sort(mid, last, std::tr1::bind(comp, std::tr1::placeholders::_2
                                        , std::tr1::placeholders::_1));
    return std::next_permutation(first, last, comp);
}
Run Code Online (Sandbox Code Playgroud)

我试着这样称呼它:

bool mycomp (int c1, int c2)
{ return (c1)<(c2); }


void test_combos(int to_generate){
    std::vector<int> combo(30);
    for(int i=0;i<30;++i){
        combo.push_back(i);
    }
    while(next_combination<std::vector<int>::iterator,   bool>(combo.begin(),combo.begin()+to_generate,combo.end(),mycomp)){
        for(std::vector<int>::iterator iter = combo.begin(); iter != combo.end() ; ++iter){
            std::cout << *iter << " ";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到一条巨大的 stl 乱码错误消息。这里有什么明显的问题吗?

我可以找到哪些标头 …

c++ message formatted

5
推荐指数
1
解决办法
6193
查看次数

标签 统计

c++ ×3

combinatorics ×1

formatted ×1

message ×1

stl ×1