Вопрос по информатике:
#include
using namespace std;
int main()
{
int finish = 0;
int res = 0;
string a;
cin >> a;
finish = a.length();
for (int x = 0; x < a.length(); x++)
{
if (a[x] == '(')
{
res++;
}
else
{
res--;
if (res < 0)
{
res++;
finish--;
}
}
}
finish -= res;
cout << finish;
}
Как сделать так, чтобы программа быстрее работала (задача: ограничение по времени на тест 5 seconds
ограничение по памяти на тест 256 megabytes
ввод стандартный ввод
вывод стандартный вывод
Напомним, что скобочная последовательность называется правильной, если путем вставки в нее символов «+» и «1» можно получить из нее корректное математическое выражение. Например, последовательности «(())()», «()» и «(()(()))» — правильные, в то время как «)(», «(()» и «(()))(» — нет.
Однажды Васе попалась скобочная последовательность. Он решил удалить из нее некоторые скобки так, чтобы последовательность стала правильной. Какую наибольшую длину может иметь получившаяся правильная скобочная последовательность?
Входные данные
В первой строке входного файла записана непустая строка, состоящая из символов «(» и «)». Её длина не превосходит 10(в 6 степени).
Выходные данные
Выведите длину наибольшей правильной скобочной подпоследовательности.
Примеры
входные данные
(()))(
выходные данные
4
приер2:
входные данные
((()())
выходные данные
6
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок - бесплатно!
- 16.01.2018 05:19
- Информатика
- remove_red_eye 18206
- thumb_up 18
Ответы и объяснения 1
using namespace std ;
main()
{
string s;
cin >> s;
int cnt = 0, ans = 0;
for(int i = 0; i < s.size(); i++)
if(s[i] == '(')
cnt++;
else
if(cnt)
{
cnt--;
ans+=2;
}
cout << ans;
}
- 17.01.2018 04:59
- thumb_up 40
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.