두 갈래 트리 출력(정보학 오세일통-T1366)

[제목 설명]


나무의 오목 표현법은 주로 나무의 화면이나 출력을 출력하는 데 사용되는데 그 표현의 기본 사상은 형제 간의 길이가 같고 하나의 결점의 길이가 그 자결점의 길이보다 작지 않다는 것이다.두 갈래 나무도 이렇게 나타낼 수 있다. 만약에 잎결점의 길이가 1이라고 가정하면 비잎결점의 길이는 그의 좌우 자목의 길이와 같다.
두 갈래 나무의 결점은 알파벳으로 (중복 없음) 출력할 때 루트 결점부터 시작합니다.
줄마다 몇 개의 결점 문자를 출력합니다(같은 문자의 개수는 이 결점 길이와 같습니다). 이 결점에 왼쪽 트리가 있으면 왼쪽 트리를 출력합니다.이 결점에 오른쪽 트리가 있으면 오른쪽 트리를 출력합니다.
두 갈래 나무의 결점을 문자로 묘사한다고 가정하면, 현재 선순과 중순으로 흐르는 문자열을 제시하고, 나무의 오목 표현법으로 이 두 갈래 나무를 출력합니다.

[입력]


두 줄, 각 줄은 알파벳으로 구성된 문자열(한 줄의 모든 문자는 유일하다), 각각 두 갈래 나무의 선차적 역행과 중차적 역행의 서열을 나타낸다.

[출력]


줄의 수는 이 나무의 결점수와 같고, 줄마다 알파벳이 같다.

[샘플 입력]


ABCDEFG CBDAFEG

[출력 예제]


AAAA BB C D EE F G

[소스 프로그램]

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 100001
#define MOD 123
#define E 1e-6
using namespace std;
char a[N],b[N],c[N];
int calculate(int left1,int right1,int left2,int right2)
{
    if(left1==right1)
    {
        c[left1]=1;
        return c[left1];
    }
    int i;
    for(i=left2;i<=right2;i++)
        if(a[left1]==b[i])
            break;
    if(left2>a>>b;
    int lena=strlen(a);
    int lenb=strlen(b);
    calculate(0,lena-1,0,lenb-1);
    for(int i=0;i

좋은 웹페이지 즐겨찾기