自己测试的案例正确,但结果都是WA

P1827 [USACO3.4] 美国血统 American Heritage

测试的如果是题目给出的样例那只能说明数据里没有样例(
by _Remake_ @ 2022-03-19 17:20:36


是数据问题,看了别人提示,需要判断数据 ```cpp /* https://www.luogu.com.cn/problem/P1827 */ #include <cstdio> char preOrder[26], inOrder[26]; // 中序遍历序列中根元素位置 int root(char c, int il, int ir) { int r = il; while (r <= ir && inOrder[r] != c) r++; return r; } void slove(int pl, int pr, int il, int ir) { if (pl > pr || il > ir) return; if (pl == pr) { printf("%c", preOrder[pl]); return; } char c = preOrder[pl]; int r = root(c, il, ir); int ls = r - il, rs = ir - r; // 左右子树元素个数 slove(pl + 1, pl + ls, il, r - 1); // 左子树 slove(pl + ls + 1, pr, r + 1, ir); // 右子树 printf("%c", c); } int main() { int n = 0; char c; while ((c = getchar()) != '\n') if (c >= 'A' && c <= 'Z') // 必须判断,否则WA,题目数据有问题(坑) inOrder[n++] = c; for (int i = 0; i < n; i++) scanf("%c", &preOrder[i]); slove(0, n-1, 0, n-1); return 0; } ``` 这样据可以了
by tgsalgo @ 2022-03-19 17:29:39


|