
#include <iostream>
#include <stack>
using namespace std;
void solve(string &s){
stack<char> cur;
for(int i = 0; i < s.size(); i++){
if(!cur.empty() && ((cur.top() == '(' && s[i] == ')') || (cur.top() == '{' && s[i] == '}') || (cur.top() == '[' && s[i] == ']')))
cur.pop();
else cur.push(s[i]);
}
if(cur.empty()) cout << "YES";
else cout << "NO";
}
signed main() {
string str;
cin >> str;
solve(str);
}
ответ: 33
Объяснение: В "Ж" можно приехать из Е, К, З, В или Б, поэтому N = NЖ = NЕ + NК + N З + NВ + NБ (1)
NЕ = NБ + NК;
NК = NЗ + NИ;
NЗ = NВ + NГ + NД;
NВ = NА + NБ = 1 + 1 = 2;
NБ = NА = 1.
Добавим еще вершины:
NГ = NА = 1;
NД = NА + NГ = 1 + 1 = 2;
NИ = NЗ + NД = NЗ + 2;
Преобразуем первые вершины с учетом значений вторых:
NЕ = NБ + NК = 1 + 12 = 13 ;
NК = NЗ + NИ = 2NЗ + 2 = 10 + 2 = 12;
NЗ = NВ + NГ + NД = 2 + 1 + 2 = 5;
NВ = NА + NБ = 2;
NБ = NА = 1.
Подставим в формулу (1):
N = NЖ = 13 + 12 + 5 + 2 + 1 = 33