ccf 2019_03_2 二十四点
#include<iostream> #include<stdio.h> #include<algorithm> #include<queue> #include<stack> using namespace std; int jisuan(int a, char c, int b) { if (c == '+') return a + b; else if (c == '-') return a - b; else if (c == 'x') return a * b; else if (c == '/') return a / b; } int main() { int n; cin >> n; while (n--) { stack<int> qint; stack<char> qchar; char a[8]; cin >> a; for (int i = 0; i < 7; i++) { if (a[i] == 'x' || a[i] == '/') { int b = qint.top(); qint.pop(); int x = jisuan(b, a[i], a[i + 1] - '0'); i++; qint.push(x); } else { if ((a[i] == '-' || a[i] == '+')) qchar.push(a[i]); else { qint.push(a[i] - '0'); } } } stack<int> qint2; stack<char> qchar2; while (!qint.empty()) { qint2.push(qint.top()); qint.pop(); } while (!qchar.empty()) { qchar2.push(qchar.top()); qchar.pop(); } while (!qchar2.empty()) { int a = qint2.top(); qint2.pop(); int b = qint2.top(); qint2.pop(); char x = qchar2.top(); qchar2.pop(); int dd = jisuan(a, x, b); qint2.push(dd); } if (qint2.top() == 24) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }