Предмет: Информатика,
автор: MrMiner1
Задача удалена.......................
13.01.2019
21:35 MrMiner1 добавил комментарий показать
21:29 Indentuum добавил решение
21:05 MrMiner1 отредактировал задачу
20:20 MrMiner1 добавил задачу
21:35 MrMiner1 добавил комментарий показать
21:29 Indentuum добавил решение
21:05 MrMiner1 отредактировал задачу
20:20 MrMiner1 добавил задачу
У задачи нет условия -> она должна быть удалена
отвечающий не виноват что пока он писал решение автор изменил условие. удаление задачи привело бы к удалению труда отвечающего.
В коментах к ответу все описано)
Ответы
Автор ответа:
3
Мы ищем динамикой наибольшую подпоследовательность для отрезка [0; i] где гарантировано должен быть i-ый элемент. Потом выбираем из всех наибольшее число.
Приложения:
Не буду подробно, в двух словах
Исключено использование оператора '>>' без защитных конструкций.
Причина:
Оператор >> является частью стандартной библиотеки C++, как и большинство функций/классов он способен выбрасывать исключения.
В свою очередь, при вводе неверной информации по стандарту не гарантированно инициализация переменной переданной в оператор >> как параметр, что является undefined behavior.
То есть, при неверном вводе данных в зависимости от компилятора будет определено следующие сценарии поведения:
Причина:
Оператор >> является частью стандартной библиотеки C++, как и большинство функций/классов он способен выбрасывать исключения.
В свою очередь, при вводе неверной информации по стандарту не гарантированно инициализация переменной переданной в оператор >> как параметр, что является undefined behavior.
То есть, при неверном вводе данных в зависимости от компилятора будет определено следующие сценарии поведения:
- throw exeption и в отсутствии try-catch конструкции над ним - креш в рантайме
- инициализация переменной default значением
- инициализация переменной мусором
Исключения:
При наличии try-catch конструкции оборачивающей ввод данных.
Рекомендация:
Лучше использовать функцию getline и явное преобразование данных из char* в необходимый тип данных.
- инициализация переменной default значением
- инициализация переменной мусором
Исключения:
При наличии try-catch конструкции оборачивающей ввод данных.
Рекомендация:
Лучше использовать функцию getline и явное преобразование данных из char* в необходимый тип данных.
А так же
При использовании инкрементирующего оператора следует использовать только его префиксную форму.
Причина:
При использованной оператора префиксной формы происходит увеличение значения, после чего return операция его уже нового значения.
В отличие от префиксной - постфиксная форма предполагает сначала return текущего значения, после чего увеличение текущего значения, что влечет за собой более длительный процесс выполнения операции и использование в 2 раза больше памяти для сохранения предыдущего значения.
При использованной оператора префиксной формы происходит увеличение значения, после чего return операция его уже нового значения.
В отличие от префиксной - постфиксная форма предполагает сначала return текущего значения, после чего увеличение текущего значения, что влечет за собой более длительный процесс выполнения операции и использование в 2 раза больше памяти для сохранения предыдущего значения.
Исключение:
Особые алгоритмы требующие данного поведения.
Примечание:
Операция инкремента равно-справедлива для всех типов для которых она определена, в том числе и итераторов, что может повлечь значительные потери в производительности, хотя на первый взгляд, если ограничиваться integer, данного явления не наблюдается.
Особые алгоритмы требующие данного поведения.
Примечание:
Операция инкремента равно-справедлива для всех типов для которых она определена, в том числе и итераторов, что может повлечь значительные потери в производительности, хотя на первый взгляд, если ограничиваться integer, данного явления не наблюдается.
к слову о циклах
При использовании сокращенной формы цикла for необходимо итерировать её элементы по константной ссылке.
Причина:
При использовании константной ссылки, избегаются следующие ситуации снижающие производительность & безопасность кода:
- Ссылка обеспечивает гарантированное использование объекта без создания его копии
- Константа обеспечивает гарантированную защиту ссылки от модификации
Таким образом снижается потребление памяти, время выполнения кода, а так же код остается безопасным.
Причина:
При использовании константной ссылки, избегаются следующие ситуации снижающие производительность & безопасность кода:
- Ссылка обеспечивает гарантированное использование объекта без создания его копии
- Константа обеспечивает гарантированную защиту ссылки от модификации
Таким образом снижается потребление памяти, время выполнения кода, а так же код остается безопасным.
Исключения:
Константность может быть не использована в силу необходимости модификации элементов коллекции.
Примечание:
Передача элементов по значению в цикле исключена. Приемлем только вариант подобный:
for ( auto& element : collection)
Константность может быть не использована в силу необходимости модификации элементов коллекции.
Примечание:
Передача элементов по значению в цикле исключена. Приемлем только вариант подобный:
for ( auto& element : collection)
Похожие вопросы
Предмет: Физика,
автор: SedaGaysumova
Предмет: История,
автор: imranarty
Предмет: Английский язык,
автор: mariakozlova746
Предмет: Математика,
автор: dan243
Предмет: Математика,
автор: Нурджан111
C++ С клавиатуры вводится n: длина массива arr. Далее массив arr заполняется целыми числами. Требуется программа, находящая наибольшую возрастающую подпоследовательность в массиве. Пример: Входные данные: 5 1 6 3 2 5 Вывод: 3 Входные данные: 10 1 10 2 3 6 5 4 8 9 7 Вывод: 6