RC-u3 跑团机器人

模拟题,注意判断条件

#include <iostream>
#include <map>
using namespace std;
string a;
map<int, int> t; 
int maxx = 0, minn = 0;
void solve()
{

    int l = 0, r = a.size() - 1, s = 1;//判断符号,s = 1是正,否则为负
    while (l <= r) {
        int sum = 0, cnt = 0;
        while (l <= r && a[l] != 'd' && a[l] != '+' && a[l] != '-')
            sum = sum * 10 + a[l++] - '0';
        // cout << sum << endl;
        if (a[l] == 'd') { //如果是一个式子
            if (sum == 0) // 对应 d2 情况
                sum = 1;
            l++;
            while (l <= r && a[l] != '+' && a[l] != '-')
                cnt = cnt * 10 + a[l++] - '0';
            t[cnt] += sum;
            // cout << sum << ' ' << cnt << endl;
            if (s == 1) {
                maxx += sum * cnt;
                minn += sum;
            } else {
                maxx -= sum;
                minn -= sum * cnt;
            }
        } else {  //如果是一个普通的数
            maxx += s * sum;
            minn += s * sum;
        }
        if (l <= r && a[l] == '+') 
            s = 1;
        else
            s = -1;
        l++;
        // cout << sum << ' ' << cnt << endl;
    }
}
int main()
{
    cin >> a;
    solve();
    for (auto i : t) {
        cout << i.first << ' ' << i.second << endl;
    }
    cout << minn << ' ' << maxx << endl;
    return 0;
}
posted @ 2022-07-13 14:16  Flying_bullet  阅读(132)  评论(0编辑  收藏  举报