poj-2255-Tree Recovery

3015 단어
컨베이어 도어
제목: 두 갈래 나무의 앞 순서와 중간 순서에 따라 후속 순서를 구한다
앞의 순서에 따라 중간의 순서를 왼쪽의 나무, 뿌리와 오른쪽의 나무로 나누어 잎 노드까지 순서대로 귀속시키다
#include <iostream> 
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <set>
#define N 1000010
#define ll long long
using namespace std;
char s1[30], s2[30], s3[30];
int l, cur, c;
void trave(int left, int right){
    int tmp = c++;
    if (left == right){
        s3[cur++] = s2[left];
        return ;
    }
    int i;
    for (i = left; i <= right; i++){
        if (s1[tmp] == s2[i]){
            break;
        }
    }
    if (i-1 >= left) trave(left, i-1);
    if (i+1 <= right) trave(i+1, right);
    s3[cur] = s2[i];
    cur++;
}
int main(){
#ifndef ONLINE_JUDGE 
    freopen("1.txt", "r", stdin);
#endif
    int i, j;
    while(~scanf("%s%s", s1, s2)){
        memset(father, 0, sizeof(father));
        l = strlen(s1);
        s3[l] = 0;
        s3[l-1] = s1[0];
        cur = 0;
        c = 0;
        trave(0, l-1);
        puts(s3);
    }
    return 0;
}

좋은 웹페이지 즐겨찾기