#include <stdio.h>
void print(const int *v, const int size)
{
if (v != 0) {
for (int i = 0; i < size; i++) {
}
}
} // print
void permute(int *v, const int start, const int n)
{
if (start == n-1) {
print(v, n);
}
else {
for (int i = start; i < n; i++) {
int tmp = v[i];
v[i] = v[start];
v[start] = tmp;
permute(v, start+1, n);
v[start] = v[i];
v[i] = tmp;
}
}
}
int main(void)
{
int v[] = {1, 2, 3};
permute(v, 0, sizeof(v)/sizeof(int));
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgoKdm9pZCBwcmludChjb25zdCBpbnQgKnYsIGNvbnN0IGludCBzaXplKQp7CiAgaWYgKHYgIT0gMCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAJICBwcmludGYoIiVjIiwgaSA/ICcsJzoneycpOwogICAgICBwcmludGYoIiVkIiwgdltpXSApOwogICAgfQogICAgcHJpbnRmKCJ9XG4iKTsKICB9Cn0gLy8gcHJpbnQKCgp2b2lkIHBlcm11dGUoaW50ICp2LCBjb25zdCBpbnQgc3RhcnQsIGNvbnN0IGludCBuKQp7ICAKICBpZiAoc3RhcnQgPT0gbi0xKSB7CiAgICBwcmludCh2LCBuKTsKICB9CiAgZWxzZSB7CiAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBuOyBpKyspIHsKICAgICAgaW50IHRtcCA9IHZbaV07CiAgICAgIAogICAgICB2W2ldID0gdltzdGFydF07CiAgICAgIHZbc3RhcnRdID0gdG1wOwogICAgICBwZXJtdXRlKHYsIHN0YXJ0KzEsIG4pOwogICAgICB2W3N0YXJ0XSA9IHZbaV07CiAgICAgIHZbaV0gPSB0bXA7CiAgICB9CiAgfQp9CgoKaW50IG1haW4odm9pZCkKewogIGludCB2W10gPSB7MSwgMiwgM307CiAgcGVybXV0ZSh2LCAwLCBzaXplb2Yodikvc2l6ZW9mKGludCkpOwp9Cg==
{1,2,3}
{1,3,2}
{2,1,3}
{2,3,1}
{3,2,1}
{3,1,2}