.NET 3.x Добавить числа в скобочное выражение, чтобы получилось правильное арифметическое выражение - C#
Формулировка задачи:
1.Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение.
Ограничения: 1 <= N <= 100 000.
Ввод: В первой строке находится число скобок N, во второй - N символов из набора (, ), [, ], {, }.
Вывод: Выводится слово "Yes", если получить правильное арифметическое выражение можно, или "No", если нельзя.
Примеры
Ввод 1 Ввод 2
6 24
([())] {[()([]{})[]]({}{{}})}[]
Вывод 1 Вывод 2
No Yes
2.Требуется написать программу, которая выполняет t запросов по возведению целых чисел n, в целую степень ki, где i принадлежит [1..t] методом бинарного возведения в степень.
Ввод: в первой строке натуральное число t - количество запросов. Далее сами запросы в формате n, ki, разделенные пробелом.
Решение задачи: «.NET 3.x Добавить числа в скобочное выражение, чтобы получилось правильное арифметическое выражение»
textual
Листинг программы
- static void Main()
- {
- int length = int.Parse(Console.ReadLine());
- var stack = new Stack<char>(length);
- for (int i = 0; i < length; i++)
- {
- char input = (char)Console.Read();
- if (input == '(' || input == '{' || input == '[') stack.Push(input);
- else if (stack.Count == 0 || stack.Peek() != Match(input)) break;
- else stack.Pop();
- }
- Console.WriteLine(stack.Count == 0 ? "YES" : "NO");
- }
- static char Match(char input)
- {
- switch (input)
- {
- case ')': return '(';
- case ']': return '[';
- case '}': return '{';
- default: return '\0';
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д