解題心得
用stack,把字串倒著看。
程式碼
#include<iostream> #include<stack> #include<vector> #include <string> using namespace std; int main() { int x, y, z; stack<int> st; vector<string> v; string s; while (cin >> s) v.push_back(s); for (int i = v.size() - 1; i >= 0; i--) { if (v[i] == "f") { x = st.top(); st.pop(); x = 2 * x - 3; st.push(x); } else if (v[i] == "g") { x = st.top(); st.pop(); y = st.top(); st.pop(); x = 2 * x + y - 7; st.push(x); } else if (v[i] == "h") { x = st.top(); st.pop(); y = st.top(); st.pop(); z = st.top(); st.pop(); x = 3 * x - 2 * y + z; st.push(x); } else { st.push(stoi(v[i])); } } cout << st.top(); return 0; }
沒有留言:
張貼留言