向量值的不同组合
the different combinations of a vector's values
假设我有一个n个值的向量,我想得到它的值的不同组合,例如:如果我有vect =
[a, b, c],我想要的不同组合是:[a,b,c],[a,b],[a,c],[b,c],[a],[b],[c]请注意,例如 [a,b] 与 [b,a] 相同,所以我不需要同时保留它们。
从 0
计数到 2^vector.size() - 1
。如果循环变量的位 i 为 1,则在组合中包含 vector[i]
。
vector<char> v;
v.push_back('a');
v.push_back('b');
v.push_back('c');
for (int counter = 0; counter < (1 << v.size()); ++counter)
{
vector<char> combination;
for (int i = 0; i < v.size(); ++i)
{
if (counter & (1 << i))
combination.push_back(v[i]);
}
// do something with combination
}
编辑:如果要排除空集,请从 1 开始计数。
给你一个伪代码,请把它转换成真正的代码。
vector resultVec;
while (!inputVec.empty)
{
char c = inputVec.pop_back();
foreach(one in resultVec)
{
combined = combine c and one;
resultVec.push_back(combined);
}
resultVec.push_back(c);
}
想象一下,你有一个函数已经可以为你做到这一点。让我们称之为combinations
.
如果你要实现你自己的版本,my_combinations
,你可以通过查看向量中的第一个元素,在向量的其余部分调用combinations
,然后将你的元素与每个组合组合在一起来实现。
实现这一点后,您可以委托给自己的combinations
版本,而不是使用预先存在的版本。
相关文章:
- 检查向量是否具有所有可能的字符组合
- 从向量的向量中删除向量的组合
- 如何得到几个子向量的组合
- 如何组合两个整数向量
- 如果我们从每个 Y 向量中选择一个值,则 X 数字的每个组合都可能
- 在不使用递归的情况下求解所有 2D 字符串向量组合?(C++)
- 字符串向量的有效组合
- 向量的高效组合最小值和平均值计算
- 如何在 Boost.Sprit.Qi 中从向量制作组合的 ascii::string 规则<string>?
- 将多个向量(函数结果)组合到一个使用模板中
- 双重释放或损坏(输出):使用向量的组合算法0x0000000001a880a0***
- 如何沿行组合两个向量?
- 创建多个向量的所有可能组合
- 如何在 c++ 中将集合和数组合并到向量中
- 在C++编程语言中,如何用n个向量长度的所有可能的字符串组合来填充向量
- 在 C++11 中计算字母和单词的双字母组合的 std::线程向量的问题
- 找到两个向量数组的组合,该数组的总和是 c++ 中所有其他组合的最大值
- 如何在C++中组合向量的元素
- c++组合向量(如果它们共享一个数字)
- 这是用组合向量类重载[]的正确方法吗?