这是我的抽象读入。
while (1) {
getline(cin, r);
if (r == "EOF") break;
deque<char> l;
for (int i = 0; i < r.size(); i++) {
if (r[i] == '<') {
if (!l.empty()) l.pop_back();
} else l.push_back(r[i]);
}
r = "";
while (!l.empty()) {
r = l.front() + r;
l.pop_front();
}
a[++ca] = r;
}
喜提10分。
改成这样:
while (1) {
getline(cin, r);
if (r == "EOF") break;
l = "";
for (int i = 0; i < r.size(); i++) {
if (r[i] == '<') {
if (!l.empty()) l.pop_back();
} else l.push_back(r[i]);
}
a[++ca] = l;
}
AC。
原因:入栈再出栈是倒序,用双端队列结果写成r = l.front() + r;成功骗到自己……其实可以直接r+=l.front()的。