假设我有一个由 n 个值组成的向量,我想获得其值的不同组合,例如:如果我有 vect = [a, b, c] 我想要的不同组合是: [a, b, c] , [a,b], [a,c], [b,c], [a], [b], [c]
请注意,例如 [a,b] 与 [b,a] 相同,因此我不需要同时保留它们。
计数自0
to 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 开始计数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)