두 갈래 나무의 앞 순서와 중간 순서를 정하여 두 갈래 나무를 구성할 수 있는지 판단하고, 뒷 순서를 출력할 수 있다면
#include <stdio.h>
const int kMaxN = 1000;
int pre[kMaxN] = {0};
int in[kMaxN] = {0};
int post[kMaxN] = {0};
int n = 0;
bool Construct(int ps, int pe, int is, int ie, int s, int e) {
if (pe - ps != ie - is) return false;
int root = pre[ps];
post[e] = root;
int i;
for (i = is; i <= ie; i++) {
if (in[i] == root) break;
}
if (i > ie) {
return false;
}
int len1 = i - is;
int len2 = ie - i;
bool l = false;
bool r = false;
if (len1 == 0) {
l = true;
} else {
l = Construct(ps + 1, ps + len1, is, is + len1 - 1, s, s + len1 - 1);
}
if (len2 == 0) {
r = true;
} else {
r = Construct(ps + len1 + 1, pe, is + len1 + 1, ie, s + len1, e - 1);
}
return l && r;
}
int main() {
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; i++) {
scanf("%d", &pre[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &in[i]);
}
if (Construct(0, n - 1, 0, n - 1, 0, n - 1)) {
for (int i = 0; i < n; i++) {
printf("%d ", post[i]);
}
printf("
");
} else {
printf("No
");
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.