Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // imslavko@gmail.com
- #include <cstdio>
- #include <cstring>
- char s[100];
- int a[100][100], n;
- int main() {
- scanf("%s", s + 1); // я начал строку с 1, чтобы было проще
- a[0][0] = 1; // 1 способ для нулевой строки с нулевым балансом
- n = strlen(s + 1); // n = |s|, размер строки
- for (int i = 1; i <= n; i++) // для каждого символа
- for (int j = 0; j < 85; j++) { // для каждого баланса
- if (s[i] == '(' || s[i] == '?') // баланс увеличивается
- a[i][j + 1] += a[i - 1][j];
- if (s[i] == ')' || s[i] == '?') // баланс уменьшается
- if (j - 1 >= 0) // надо проверить, чтобы баланс был больше нуля
- a[i][j - 1] += a[i - 1][j];
- }
- printf("%d\n", a[n][0]); // овет - сколько таких с нулевым балансом в конце, так как нам нужны только правильные последовательности
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement