#include <stdio.h>
void recur (char* arr, int i, int len, char *x, int k, int n) {
if (k==n) {
x[k]=0;
}
else {
for (int j=i+1; j<len; j++) {
x[k]=arr[j];
recur (arr, j, len, x, k+1, n);
}
}
}
int main(void) {
const int len=10;
char *arr="abcdefghijklmnopqrstuvw";
char out[5];
recur (arr, -1, len, out, 0, 4 );
printf ("==================\n"); for (int i = 0; i < len; i++)
for (int j = i + 1; j < len; j++)
for (int k = j + 1; k < len; k++)
for (int l = k + 1; l < len; l++)
printf("%c%c%c%c\n", arr
[i
], arr
[j
], arr
[k
], arr
[l
]);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHJlY3VyIChjaGFyKiBhcnIsIGludCBpLCBpbnQgbGVuLCBjaGFyICp4LCBpbnQgaywgaW50IG4pIHsKCWlmIChrPT1uKSB7CgkJeFtrXT0wOyAKCQlwcmludGYgKCIlc1xuIiwgeCk7Cgl9CgllbHNlIHsKCQlmb3IgKGludCBqPWkrMTsgajxsZW47IGorKykgewoJCQl4W2tdPWFycltqXTsKCQkgICAgcmVjdXIgKGFyciwgaiwgbGVuLCB4LCBrKzEsIG4pOwoJCX0KCX0KfQoKaW50IG1haW4odm9pZCkgewoJY29uc3QgaW50IGxlbj0xMDsgCgljaGFyICphcnI9ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3IjsKCWNoYXIgb3V0WzVdOwoJcmVjdXIgKGFyciwgLTEsIGxlbiwgb3V0LCAwLCA0ICk7CglwcmludGYgKCI9PT09PT09PT09PT09PT09PT1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykKICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCBsZW47IGorKykKICAgICAgICAgICAgZm9yIChpbnQgayA9IGogKyAxOyBrIDwgbGVuOyBrKyspCiAgICAgICAgICAgICAgICBmb3IgKGludCBsID0gayArIDE7IGwgPCBsZW47IGwrKykKICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVjJWMlYyVjXG4iLCBhcnJbaV0sIGFycltqXSwgYXJyW2tdLCBhcnJbbF0pOyAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgIHJldHVybiAwOwp9Cg==