fork(1) download
  1. #include <stdio.h>
  2.  
  3. void swap(char *x, char *y){
  4. char w;
  5. w = *x;
  6. *x = *y;
  7. *y = w;
  8. }
  9.  
  10. void permute(char *str, int start, int n, int minLength, int maxLength)
  11. {
  12. int i;
  13.  
  14. if (start >= minLength)
  15. {
  16. char temp = str[start]; // store the character, so we don't lose it
  17. str[start] = 0; // 0x00 - end of string
  18. printf("%s\n", str);
  19. str[start] = temp;
  20. }
  21.  
  22. if (start == maxLength)
  23. return;
  24.  
  25. for (i = start; i < n; i++)
  26. {
  27. swap(str+i, str+start);
  28. permute(str, start+1, n, minLength, maxLength);
  29. swap(str+i, str+start);
  30. }
  31. }
  32.  
  33. int main(void) {
  34. char arr[] = "abcde ";
  35. permute(arr, 0, 5, 2, 4);
  36. return 0;
  37. }
  38.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
ab
abc
abcd
abce
abd
abdc
abde
abe
abed
abec
ac
acb
acbd
acbe
acd
acdb
acde
ace
aced
aceb
ad
adc
adcb
adce
adb
adbc
adbe
ade
adeb
adec
ae
aec
aecd
aecb
aed
aedc
aedb
aeb
aebd
aebc
ba
bac
bacd
bace
bad
badc
bade
bae
baed
baec
bc
bca
bcad
bcae
bcd
bcda
bcde
bce
bced
bcea
bd
bdc
bdca
bdce
bda
bdac
bdae
bde
bdea
bdec
be
bec
becd
beca
bed
bedc
beda
bea
bead
beac
cb
cba
cbad
cbae
cbd
cbda
cbde
cbe
cbed
cbea
ca
cab
cabd
cabe
cad
cadb
cade
cae
caed
caeb
cd
cda
cdab
cdae
cdb
cdba
cdbe
cde
cdeb
cdea
ce
cea
cead
ceab
ced
ceda
cedb
ceb
cebd
ceba
db
dbc
dbca
dbce
dba
dbac
dbae
dbe
dbea
dbec
dc
dcb
dcba
dcbe
dca
dcab
dcae
dce
dcea
dceb
da
dac
dacb
dace
dab
dabc
dabe
dae
daeb
daec
de
dec
deca
decb
dea
deac
deab
deb
deba
debc
eb
ebc
ebcd
ebca
ebd
ebdc
ebda
eba
ebad
ebac
ec
ecb
ecbd
ecba
ecd
ecdb
ecda
eca
ecad
ecab
ed
edc
edcb
edca
edb
edbc
edba
eda
edab
edac
ea
eac
eacd
eacb
ead
eadc
eadb
eab
eabd
eabc