二叉木の再構成+再帰的な典型的な応用
1720 ワード
//
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define LL long long
using namespace std;
void build(int n, char* s1, char *s2, char* s)
{
if(n<= 0) return;
int p= strchr(s2, s1[0])-s2; //
build(p, s1+1, s2, s); //
build(n-(p+1), s1+p+1, s2+p+1, s+p); //
//s[n-1] = s1[0]; //
printf("%c", s1[0]);
}
int main()
{
char s1[100], s2[100], ans[100];
while (scanf("%s %s",s1, s2)!=EOF) {
int n=strlen(s1);
build(n, s1, s2, ans);
ans[n]='\0';
//printf("%s
",ans);
}
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define LL long long
using namespace std;
//vector G1, G2,G3;
int len;
void build(int n, char* s1, char* s2, char* s)
{
if(n<=0) return;
int p= strchr(s2,s1[n-1])-s2;//
s[0]=s1[n-1];
build(p, s1, s2, s+1); // ,
build(n-(p+1),s1+p,s2+p+1,s+p+1); // ,
}
int main()
{
char s1[100], s2[100], ans[100];
while (scanf("%s %s",s1,s2)!=EOF) {
int n=strlen(s1);
len=n;
build(n, s1, s2, ans);
ans[n]='\0';
printf("%s
",ans);
}
return 0;
}