• Source
    1. char *c[9]={"cat","today","yoda","artistic","cute","ewok","kilo","to","otter"};
    2. u[9]={-1};
    3. char *s="attic";
    4.  
    5. g(char*y){printf("%s, ",y);}
    6. z(char*w){
    7. int i,k=-1,v=0,j=sizeof(c)/sizeof(c[0]);
    8. int m[j],b=0;
    9. for(i=0;i<j;i++){
    10. m[v++]=c[i][0]==w[strlen(w)-1]?i:-1;
    11. if(u[i]==6)m[v-1]=-1;
    12. if(strcmp(w,c[i]))k=i;
    13. }
    14. printf("%s",w);
    15. for(i=0;i<j;i++){
    16. if(m[i]!=-1){
    17. if(v+i!=j){
    18. g(s);
    19. for(;b<j;b++){
    20. if(u[b]==6)g(c[b]);
    21. }
    22. }else printf(", ");
    23. u[i]=6;
    24. z(c[i]);
    25. u[i]=-1;
    26. } else v+=-1;
    27. }
    28. if(k!=-1)u[k]=-1;
    29. if(v==0)printf(" ; ");
    30. }
    31.  
    32. main(){
    33. z(s);
    34. printf("\n");
    35. return 0;
    36. }