Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- nums = [6, -3, -2, -2]
- max_at = nums[0] # макс. значение подпоследовательности, конец которой - цифра, на которой мы ща стоим
- min_at = nums[0] # мин. значение подпоследовательности, конец которой - цифра, на которой мы ща стоим
- max_value = max_at # глобальный максимум
- for num in nums[1:]:
- prev_max_at = max_at; prev_min_at = min_at
- max_at = max(num, num * prev_min_at, num * prev_max_at)
- min_at = min(num, num * prev_min_at, num * prev_max_at)
- max_value = max(max_value, max_at)
- print(max_value)
- """
- Вся суть заключается в том, что мы проходимся по цифрам списка и на основе предыдущих результатов
- Выясняем локально самое выгодное значение (то есть какое самое большое произведение будет до числа n?).
- Но есть один нюанс - отрицательное число. Тут нам поможет минимальное значение. Ведь если до этого у нас
- встречалось отрицательное число, то оно тоже будет отрицательным. А при отрицательное * отрицательное выходит
- положительное + оно может стать еще и максимумом
- """
Add Comment
Please, Sign In to add comment