【アルゴリズム】文字列交替
3164 ワード
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);
}