char list[5] = {'1' , '2' , '3' , '4' , '5'};
main()
{
int n;
if(n > 0 && n <= 5)
perm(n);
return 0;
}
typedef struct _PermInfo{
int i;
int j;
struct _PermInfo *parent;
}PermInfo;
push(PermInfo **top, int i, int j)
{
PermInfo
*temp
= (PermInfo
*)malloc(sizeof(PermInfo
)); temp->i = i;
temp->j = j;
temp->parent = *top;
*top = temp;
}
pop(PermInfo **top)
{
PermInfo *temp = (*top)->parent;
*top = temp;
}
swap(char *a, char *b)
{
char temp = *a;
*a = *b;
*b = temp;
}
perm(int number)
{
int i;
PermInfo *top = 0;
push(&top, 0, 0);
while(top)
{
if(top->i == number)
{
for(i = 0; i < number; ++i)
}
if(top->j < number)
{
swap(&list[top->i], &list[top->j]);
push(&top, top->i + 1, top->i + 1);
}
else
{
pop(&top);
if(top)
{
swap(&list[top->i], &list[top->j]);
++top->j;
}
}
}
}
Y2hhciBsaXN0WzVdID0geycxJyAsICcyJyAsICczJyAsICc0JyAsICc1J307CgptYWluKCkKewogICAgaW50IG47CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgaWYobiA+IDAgJiYgbiA8PSA1KQogICAgICAgIHBlcm0obik7CgogICAgcmV0dXJuIDA7Cn0KCnR5cGVkZWYgc3RydWN0IF9QZXJtSW5mb3sKICAgIGludCBpOwogICAgaW50IGo7CiAgICBzdHJ1Y3QgX1Blcm1JbmZvICpwYXJlbnQ7Cn1QZXJtSW5mbzsKCnB1c2goUGVybUluZm8gKip0b3AsIGludCBpLCBpbnQgaikKewogICAgUGVybUluZm8gKnRlbXAgPSAoUGVybUluZm8gKiltYWxsb2Moc2l6ZW9mKFBlcm1JbmZvKSk7CiAgICB0ZW1wLT5pID0gaTsKICAgIHRlbXAtPmogPSBqOwogICAgdGVtcC0+cGFyZW50ID0gKnRvcDsKICAgICp0b3AgPSB0ZW1wOwp9Cgpwb3AoUGVybUluZm8gKip0b3ApCnsKICAgIFBlcm1JbmZvICp0ZW1wID0gKCp0b3ApLT5wYXJlbnQ7CiAgICBmcmVlKCp0b3ApOwogICAgKnRvcCA9IHRlbXA7Cn0KCnN3YXAoY2hhciAqYSwgY2hhciAqYikKewogICAgY2hhciB0ZW1wID0gKmE7CiAgICAqYSA9ICpiOwogICAgKmIgPSB0ZW1wOwp9CgpwZXJtKGludCBudW1iZXIpCnsKICAgIGludCBpOwogICAgUGVybUluZm8gKnRvcCA9IDA7CgogICAgcHVzaCgmdG9wLCAwLCAwKTsKCiAgICB3aGlsZSh0b3ApCiAgICB7CiAgICAgICAgaWYodG9wLT5pID09IG51bWJlcikKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IG51bWJlcjsgKytpKQogICAgICAgICAgICAgICAgcHJpbnRmKCIlYyIgLCBsaXN0W2ldKTsKICAgICAgICAgICAgcHJpbnRmKCAiXG4iICk7CiAgICAgICAgfQoKICAgICAgICBpZih0b3AtPmogPCBudW1iZXIpCiAgICAgICAgewogICAgICAgICAgICBzd2FwKCZsaXN0W3RvcC0+aV0sICZsaXN0W3RvcC0+al0pOwogICAgICAgICAgICBwdXNoKCZ0b3AsIHRvcC0+aSArIDEsIHRvcC0+aSArIDEpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBwb3AoJnRvcCk7CiAgICAgICAgICAgIGlmKHRvcCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3dhcCgmbGlzdFt0b3AtPmldLCAmbGlzdFt0b3AtPmpdKTsKICAgICAgICAgICAgICAgICsrdG9wLT5qOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==