#include <algorithm>
#include <cassert>
#include <iostream>
#include <string>
#include <vector>
template <typename T>
void Combination(const std::vector<T>& v, std::size_t count)
{
assert(count <= v.size());
std::vector<bool> bitset(v.size() - count, 0);
bitset.resize(v.size(), 1);
do {
for (std::size_t i = 0; i != v.size(); ++i) {
if (bitset[i]) {
std::cout << v[i] << " ";
}
}
std::cout << std::endl;
} while (std::next_permutation(bitset.begin(), bitset.end()));
}
int main() {
std::vector<std::string> original {"Brown", "Yellow", "Blue"};
Combination(original, 2);
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIENvbWJpbmF0aW9uKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+JiB2LCBzdGQ6OnNpemVfdCBjb3VudCkKewogICAgYXNzZXJ0KGNvdW50IDw9IHYuc2l6ZSgpKTsKICAgIHN0ZDo6dmVjdG9yPGJvb2w+IGJpdHNldCh2LnNpemUoKSAtIGNvdW50LCAwKTsKICAgIGJpdHNldC5yZXNpemUodi5zaXplKCksIDEpOwoKICAgIGRvIHsKICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpICE9IHYuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgaWYgKGJpdHNldFtpXSkgewogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IHZbaV0gPDwgIiAiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgICB9IHdoaWxlIChzdGQ6Om5leHRfcGVybXV0YXRpb24oYml0c2V0LmJlZ2luKCksIGJpdHNldC5lbmQoKSkpOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBvcmlnaW5hbCB7IkJyb3duIiwgIlllbGxvdyIsICJCbHVlIn07CgkKCUNvbWJpbmF0aW9uKG9yaWdpbmFsLCAyKTsKCXJldHVybiAwOwp9