#include <cstdio>
#include <algorithm>
void powerSet(char *arr, int arrLen, int pos, int startPos, int length)
{
if (length == 0)
printf("%.*s\n", pos, arr);
else
for (int i = startPos; i < arrLen; i++)
{
std::swap(arr[pos], arr[i]);
powerSet(arr, arrLen, pos+1, i+1, length - 1);
std::swap(arr[pos], arr[i]);
}
}
void powerSet(char *arr, int arrLen)
{
for (int i = 1; i <= arrLen; i++)
powerSet(arr, 4, 0, 0, i);
}
int main()
{
char arr[] = "1234";
powerSet(arr, 4);
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnZvaWQgcG93ZXJTZXQoY2hhciAqYXJyLCBpbnQgYXJyTGVuLCBpbnQgcG9zLCBpbnQgc3RhcnRQb3MsIGludCBsZW5ndGgpCnsKICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICBwcmludGYoIiUuKnNcbiIsIHBvcywgYXJyKTsKICAgZWxzZQogICAgICBmb3IgKGludCBpID0gc3RhcnRQb3M7IGkgPCBhcnJMZW47IGkrKykKICAgICAgewogICAgICAgICBzdGQ6OnN3YXAoYXJyW3Bvc10sIGFycltpXSk7CiAgICAgICAgIHBvd2VyU2V0KGFyciwgYXJyTGVuLCBwb3MrMSwgaSsxLCBsZW5ndGggLSAxKTsKICAgICAgICAgc3RkOjpzd2FwKGFycltwb3NdLCBhcnJbaV0pOwogICAgICB9Cn0KCnZvaWQgcG93ZXJTZXQoY2hhciAqYXJyLCBpbnQgYXJyTGVuKQp7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBhcnJMZW47IGkrKykKICAgICAgcG93ZXJTZXQoYXJyLCA0LCAwLCAwLCBpKTsKfQoKaW50IG1haW4oKQp7CiAgICBjaGFyIGFycltdID0gIjEyMzQiOwogICAgcG93ZXJTZXQoYXJyLCA0KTsKICAgIHJldHVybiAwOwp9