206
Se consideră următorul model (pattern): n[string]
care este echivalent cu șirul (string)(string)...(string)
(string
repetat de de n
ori). Pornind de la acest model orice șir de caractere poate fi codificat.
Exemple :
Exemplu
Intrare
3[a1[b2[c]]]
Ieșire
abccabccabcc
Intrare
3[a2[c]]2[x3[y]]
Ieșire
accaccaccxyyyxyyy
#include <bits/stdc++.h> using namespace std; #define Max 1001 #define DecodMax 100001 char a[Max], r[DecodMax]; deque< pair<int, int> > Q; int main() { cin >> a; int n = strlen(a), nr = 0, ind = 0, rep, indinit; for (int i = 0; i < n; ++ i) { if (a[i] <= '9' && a[i] >= '0') nr = nr * 10 + a[i] - '0'; else if (a[i] == '[') Q.push_back(make_pair(ind, nr)), nr = 0; else if (a[i] == ']') { rep = Q.back().second; indinit = ind; while (-- rep) for (int j = Q.back().first; j < indinit; j ++) r[ind ++] = r[j]; Q.pop_back(); } else r[ind ++] = a[i]; } cout << r; }
Comentarii