C Program to Print all Interleaving of two Strings

C Program to Print all Interleaving of two Strings:Given two strings s1 and s2, write a function that will print all the interleavings of the given two strings. Here interleaving string is a string that has the same order that of individual strings.

C Program to Print all Interleaving of two Strings

#include <bits/stdc++.h>
using namespace std;
void printIlStrings(char *s1, char *s2, char *res, int m, 
                    int n, int i)
{
  if (m==0 && n==0)
  {
    cout<<res<<endl;
  }
  if (m != 0)
  {
    res[i] = s1[0];
    printIlStrings(s1 + 1, s2, res, m-1, n, i+1);
  }
  if (n != 0)
  {
    res[i] = s2[0];
    printIlStrings(s1, s2+1, res, m, n-1, i+1);
  }
   
}
void printIls (char *s1, char *s2, int m, int n)
{
  char *res = new char[m+n+1];
  res[m+n] = '
#include <bits/stdc++.h>
using namespace std;
void printIlStrings(char *s1, char *s2, char *res, int m, 
int n, int i)
{
if (m==0 && n==0)
{
cout<<res<<endl;
}
if (m != 0)
{
res[i] = s1[0];
printIlStrings(s1 + 1, s2, res, m-1, n, i+1);
}
if (n != 0)
{
res[i] = s2[0];
printIlStrings(s1, s2+1, res, m, n-1, i+1);
}
}
void printIls (char *s1, char *s2, int m, int n)
{
char *res = new char[m+n+1];
res[m+n] = '\0';
printIlStrings(s1, s2, res, m, n, 0);
free(res);    
}
int main()
{
char s1[] = "AB";
char s2[] = "CD";
printIls (s1, s2, strlen(s1), strlen(s2));
return 0;    
}
'; printIlStrings(s1, s2, res, m, n, 0); free(res); } int main() { char s1[] = "AB"; char s2[] = "CD"; printIls (s1, s2, strlen(s1), strlen(s2)); return 0; }

Output of Program

ABCD
ACBD
ACDB
CABD
CADB
CDAB