fork download
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. namespace X{
  7. void out(const char *str1, const char *str2, char *str3, int m, int n, int index)
  8. {
  9. if (!m && !n)
  10. std::cout<<str3<<std::endl;
  11.  
  12. if (m) {
  13. str3[index] = str1[0];
  14. out(str1+1, str2, str3, m-1, n,index+1);
  15. }
  16. if (n) {
  17. str3[index] = str2[0];
  18. out(str1,str2+1, str3, m, n-1, index+1);
  19. }
  20. }
  21.  
  22. bool isstringsum (const char *str1, const char *str2, const char *str3) {
  23. while (*str3) {
  24. if(*str1==*str3) ++str1;
  25. else if(*str2==*str3) ++str2;
  26. else return false;
  27. ++str3;
  28. }
  29.  
  30. if(*str1||*str2)
  31. return false;
  32. return true;
  33. }
  34. }
  35.  
  36. int main()
  37. {
  38. char *str1 = "ab";
  39. char *str2 = "c";
  40.  
  41. int m = strlen(str1);
  42. int n = strlen(str2);
  43.  
  44. char *strout= (char*) malloc((m+n+1)*sizeof(char));
  45. strout[m+n] = '\0';
  46.  
  47. std::cout<<"result:"<<std::endl;
  48. X::out (str1, str2, strout, m,n, 0);
  49.  
  50. char *str3 = "cab";
  51. X::isstringsum(str1,str2,str3)?std::cout<<"ok"<<std::endl:std::cout<<"error"<<std::endl;
  52.  
  53. free(strout);
  54. return 0;
  55. }
Success #stdin #stdout 0.01s 2856KB
stdin
Standard input is empty
stdout
result:
abc
acb
cab
ok