1. 程式人生 > 其它 >洛谷P1928 外星密碼 題解 字尾表示式

洛谷P1928 外星密碼 題解 字尾表示式

題目連結:https://www.luogu.com.cn/problem/P1928

字尾表示式模板題。

示例程式:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 20020;
char s[maxn];
int n;
stack<int> stk_num;
stack<string> stk_str;

int main() {
    cin >> s;
    n = strlen(s);
    stk_num.push(1);
    stk_str.push("");
    for (int i = 0; i < n;) {
        if (s[i] == '[') {
            int num = s[i+1] - '0';
            if (i+2 < n && isdigit(s[i+2])) {
                num = num * 10 + s[i+2] - '0';
                i += 3;
            }
            else i += 2;
            stk_num.push(num);
            stk_str.push("");
        }
        else if (s[i] == ']') {
            int num = stk_num.top();
            stk_num.pop();
            string str = stk_str.top();
            stk_str.pop();
            string tmp = "";
            for (int i = 0; i < num; i ++) tmp += str;
            stk_str.top() += tmp;
            i ++;
        }
        else {
            stk_str.top() += s[i++];
        }
    }
    cout << stk_str.top() << endl;
    return 0;
}