WA 70 pts 求调
查看原帖
WA 70 pts 求调
765847
lovely_codingcow楼主2023/1/9 08:42

#include <iostream>
#include <string>
#include <sstream>
#include <cmath>

using namespace std;

long long dfs(string str) {
//    cout << str << endl;
    string s = "";
    stringstream ss;
    for (int i = 0; i < str.length(); i++) {
        if (str[i] == ' ') {
            if (s == "REPEAT") {
                int n = 0, idx = str.find('[');
                if (idx != str.npos) {
                    ss.clear();
                    ss << str.substr(i + 1, str.find('[') - i);
                    ss >> n;
                    return n * dfs(str.substr(idx + 1, str.find_last_of(']') - idx - 1));
                } else {
                    return 0;
                }
            } else if (s == "FD") {
                int n = 0, idx = str.find(' ', i + 1);
                if (idx != str.npos) {
                    ss.clear();
                    ss << str.substr(i + 1, idx - i);
                    ss >> n;
                    return n + dfs(str.substr(idx));
                } else {
                    ss.clear();
                    ss << str.substr(i);
                    ss >> n;
                    return n;
                }
            } else if (s == "BK") {
                int n = 0, idx = str.find(' ', i + 1);
                if (idx != str.npos) {
                    ss.clear();
                    ss << str.substr(i + 1, idx - i);
                    ss >> n;
                    return dfs(str.substr(idx)) - n;
                } else {
                    ss.clear();
                    ss << str.substr(i);
                    ss >> n;
                    return -n;
                }
            }
            s = "";
        } else {
            s += str[i];
        }
    }
}

string str;

int main() {
    getline(cin, str);
    cout << abs(dfs(str));
}
2023/1/9 08:42
加载中...