#include <iostream>
#include <string>
void print_combinations(const std::string& s)
{
if (s.size() >= 32) {
return; // String too long
}
std::uint32_t end = 1u << s.size();
for (std::uint32_t i = 0; i != end; ++i)
{
auto j = i;
std::cout << "- ";
for (const auto c : s)
{
if ((j & 1) != 0) {
std::cout << c;
}
j >>= 1;
}
std::cout << std::endl;
}
}
int main()
{
print_combinations("abcd");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCBwcmludF9jb21iaW5hdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCnsKICAgIGlmIChzLnNpemUoKSA+PSAzMikgewogICAgICAgIHJldHVybjsgLy8gU3RyaW5nIHRvbyBsb25nCiAgICB9CiAgICBzdGQ6OnVpbnQzMl90IGVuZCA9IDF1IDw8IHMuc2l6ZSgpOwogICAgZm9yIChzdGQ6OnVpbnQzMl90IGkgPSAwOyBpICE9IGVuZDsgKytpKQogICAgewogICAgICAgIGF1dG8gaiA9IGk7CiAgICAgICAgc3RkOjpjb3V0IDw8ICItICI7CiAgICAgICAgZm9yIChjb25zdCBhdXRvIGMgOiBzKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKChqICYgMSkgIT0gMCkgewogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaiA+Pj0gMTsgICAKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBwcmludF9jb21iaW5hdGlvbnMoImFiY2QiKTsKfQo=