【アルゴリズム】文字列交替


2つの文字列を与えて、これら2つの文字列の文字が交互に構成された文字列をすべて印刷し、例えば「AB」と「CD」を入力してABCD ACBD ACDB CABD CADB CDABを印刷するなど、既存の文字の相対的な順序を維持することを要求する.だから私は直接それに基づいて括弧を生成して少し修正して、更に答えを生成しました.の
#include<iostream>
using namespace std;

void PrinAr(char *str,char *str1,char *str2,int pos,int pos1,int pos2,int lenth1,int lenth2)
{//pos      
    if(NULL == str || NULL == str1 || pos1 < 0 || lenth1 < pos1 
                   || NULL == str2 || pos2 < 0  || lenth2 < pos2 ) return;
    if(pos1 == lenth1 && pos2 == lenth2) 
    {
        cout<<str<<endl;//    
        return ;
    }
    if(pos1 < lenth1)//       
    {
        str[pos] = str1[pos1];
        PrinAr(str,str1,str2,pos+1,pos1+1,pos2,lenth1,lenth2);
    }

    if(pos2 < lenth2)//       
    {
        str[pos] = str2[pos2];
        PrinAr(str,str1,str2,pos+1,pos1,pos2+1,lenth1,lenth2);
    }
}

void PrinAr(char *str1,char *str2,int n1,int n2)
{
    char *str = new char[n1+n2+1];
    str[n1+n2] = '\0';
    PrinAr(str,str1,str2,0,0,0,n1,n2);
    delete []str;
}
void main()
{
    char *str1 = "AB";
    char *str2 = "CD";
    int n1 = strlen(str1);
    int n2 = strlen(str2);
    PrinAr(str1,str2,n1,n2);
}