有人能为我提供一个函数的链接或伪代码,用于查找n中k个元素的所有组合吗?可能在STL.我不需要计算n选择k,我需要列出所有大小为k的数字向量.
谢谢
目前我正在尝试从包含一些整数的向量生成组合。现在我希望它打印出所有长度为 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 乱码错误消息。这里有什么明显的问题吗?
我可以找到哪些标头 …