题解:P1597 语句解析

· · 题解

解题思路

考虑变量和数字都是一位的,可以将字符串分成五个字符一段。每一段中只有第一个字符和第四个字符是有效信息,故只需要处理这两个字符即可。
map<char,char> mp 维护变量存储的信息。如果每段的第四个字符是数字直接建立变量与数字的映射。如果是变量则建立变量与第四个字符对应映射的映射。

代码实现

#include<bits/stdc++.h>
using namespace std;
int main() {
    string s;
    map<char, char> mp;
    cin >> s;
    mp['a'] = mp['b'] = mp['c'] = '0';
    for (int i = 0; i < s.size(); i += 5) {
        if (s[i + 3] >= '0' && s[i + 3] <= '9')
            mp[s[i]] = s[i + 3];
        else
            mp[s[i]] = mp[s[i + 3]];
    }
    cout << mp['a'] << " " << mp['b'] << " " << mp['c'];
    return 0;
}