1 条题解
-
0
未经整理的题解:
#include <bits/stdc++.h> using namespace std; char a[35], b[35]; void dfs(int aL, int aR, int bL, int bR) { if (aL > aR) return; int p = 0; for (int j = bL; j <= bR; j++) { for (int i = aL; i <= aR; i++) if (b[j] == a[i]) { p = i; break; } if (p) break; } printf("%c", a[p]); dfs(aL, p - 1, bL, bR); dfs(p + 1, aR, bL, bR); } int main() { scanf("%s%s", a + 1, b + 1); int len = strlen(a + 1); dfs(1, len, 1, len); return 0; }优化后的代码:
#include <bits/stdc++.h> using namespace std; char a[35], b[35], ys[150]; void dfs(int aL, int aR, int bL, int bR) { if (aL > aR) return; int p = 0; for (int j = bL; j <= bR; j++) if (ys[b[j]] >= aL && ys[b[j]] <= aR) { p = ys[b[j]]; break; } printf("%c", a[p]); dfs(aL, p - 1, bL, bR); dfs(p + 1, aR, bL, bR); } int main() { scanf("%s%s", a + 1, b + 1); int len = strlen(a + 1); for (int i = 1; i <= len; i++) ys[a[i]] = i; dfs(1, len, 1, len); return 0; }
- 1
信息
- ID
- 2033
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 6
- 标签
- 递交数
- 218
- 已通过
- 59
- 上传者