두 갈래 트리 출력(정보학 오세일통-T1366)
1612 단어 #정보학 올림픽 한권통나무 구조 - 나무와 두 갈래 나무
[제목 설명]
나무의 오목 표현법은 주로 나무의 화면이나 출력을 출력하는 데 사용되는데 그 표현의 기본 사상은 형제 간의 길이가 같고 하나의 결점의 길이가 그 자결점의 길이보다 작지 않다는 것이다.두 갈래 나무도 이렇게 나타낼 수 있다. 만약에 잎결점의 길이가 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.