社区讨论
70分求调
P1575正误问题参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo2hb0r6
- 此快照首次捕获于
- 2023/10/23 13:50 2 年前
- 此快照最后确认于
- 2023/10/23 13:50 2 年前
CPP
#include <bits/stdc++.h>
using namespace std;
stack<int> val;
stack<int> op;
int mp[256];
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t, p, a, b;
char c, pre = ' ';
op.push(0);
mp['t'] = 1, mp['f'] = 0, mp['o'] = 2, mp['a'] = 3, mp['n'] = 4;
while ((c = getchar()) != '\n' && c != EOF) {
if (pre == ' ' && c != ' ') {
t = mp[c];
if (t > 1) {
while (op.top() > t) {
p = op.top(), op.pop();
if (p == 4)
if (val.size())
a = val.top(), val.pop(), val.push(!a);
else {
cout << "error";
goto end;
}
if (p == 3)
if (val.size() > 1)
a = val.top(), val.pop(), b = val.top(), val.pop(),
val.push(a && b);
else {
cout << "error";
goto end;
}
}
op.push(t);
} else
val.push(t);
}
pre = c;
}
while (op.size() > 1) {
t = op.top(), op.pop();
switch (t) {
case 2:
if (val.size() > 1)
a = val.top(), val.pop(), b = val.top(), val.pop(),
val.push(a || b);
else {
cout << "error";
goto end;
}
break;
case 3:
if (p == 3)
if (val.size() > 1)
a = val.top(), val.pop(), b = val.top(), val.pop(),
val.push(a && b);
else {
cout << "error";
goto end;
}
break;
case 4:
if (val.size())
a = val.top(), val.pop(), val.push(!a);
else {
cout << "error";
goto end;
}
break;
}
}
cout << (val.top() ? "true" : "false");
end:
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...