fork(5) download
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5. char a[]="ABCD";
  6. permute(a,0,3);
  7. return 0;
  8. }
  9. void permute(char *a,int i,int n)
  10. {
  11. int j;
  12.  
  13. if(i==n)
  14. {
  15. printf("%s \n",a);
  16. }
  17. else
  18. {
  19. for(j=i;j<=n;j++)
  20. {
  21. if(Match(a,i,j)==0)
  22. {
  23.  
  24. swap(a+i,a+j);
  25. permute(a,i+1,n);
  26. // swap(a+i,a+j); //backtrack
  27. }
  28. }
  29. }
  30.  
  31. }
  32. int Match(char *a,int i,int j)
  33. {
  34. if(i==j)
  35. {
  36. return 0;
  37. }
  38. else
  39. {
  40. for(;i<j;i++)
  41. {
  42. // printf("%c==%c \n",*(a+i),*(a+j));
  43. if(*(a+i)==*(a+j))
  44. {
  45. return 1;
  46. }
  47.  
  48. }
  49. return 0;
  50. }
  51. }
  52. void swap(char *x,char *y)
  53. {
  54. char temp;
  55.  
  56. temp=*x;
  57.  
  58. *x=*y;
  59. *y=temp;
  60. }
  61.  
  62.  
  63.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
ABCD 
ABDC 
ADBC 
ADCB 
ABCD 
ABDC 
BADC 
BACD 
BCAD 
BCDA 
BADC 
BACD 
CABD 
CADB 
CDAB 
CDBA 
CABD 
CADB 
BADC 
BACD 
BCAD 
BCDA 
BADC 
BACD