Здравствуйте.Нужна помощь с задачей. Честно говоря,я даже не знаю с чего начать,надеюсь вы сможете мне подсказать и объяснить. Вот собственно сама задача. Найти положение последовательности из десяти элементов, имеющих самую большую сумму.
Выключи деда, Найти десять элементов, которые дадут самую большую сумму ― это понятно ― сортируем массив по возрастанию, выбираем десять последних элементов, они и дадут максимальную сумму, но как искать это совсем не понятно ― просто бессмысленный набор слов Адреса этих элементов что-ли? Допустим у нас 15 элементов в массиве, подсчитываем сумму первых 10 элементов, запоминаем сумму в переменной и запоминаем номер первого элемента, сдвигаемся на один элемент, подсчитываем сумму с элемента под номером #2 до элемента под номером #11, сравниваем с сохраненной суммой, если больше, тогда запоминаем сумму и номер первого элемента последовательности, опять сдвигаемся на один элемент, подсчитываем сумму с элемента под номером #3 до элемента под номером #12, сравниваем с сохраненной суммой, если больше, тогда запоминаем, опять сдвигаемся и так до тех пор пока последним элементом этой десятки не окажется элемент с номером #15
Странный выбор форума... ну да ладно... патчеры ведь заходят на кибер тоже.... Mikl___, тут без сортировки надо 100%, вложенные циклы проходят, наверное...
Bedolaga, если я прав, то подсчет суммы не нужен, вторая сумма = первая сумма - (значение элемента #1) + (значение элемента #11), для сравнения сумм достаточно сравнить первый и одиннадцатый элемент, если первый меньше ― тогда вторая сумма (с #2 по #11) будет больше
2 раза прочел.... Подсчет суммы каждый раз, по моему, описать проще....и это тоже подсчет суммы, только завуалированный
Способ с вычитанием выбывшего элемента и прибавлением нового на порядки ускоряет подбор области кс в файле, медицинский факт. Сравнивать две соседних суммы друг с другом наверное можно по крайним элементам, но только их. То есть в ряду '3 1 1 1 1 1 1 1 1 1 1 2' тупо последовательных сравнений двух соседних кс получится неверный результат.
Решение в лоб, если я правильно понял задачу (массив не сортированный само собой). Проходишь по массиву циклом, от 0 до N - 10, для каждого i внутренним циклом проходишь 10 элементов от i до i + 10, считаешь их сумму, если сумма этих элементов больше сохраненной на предыдущем этапе, то пересохраняешь текущую сумму и пересохраняешь значение i, функция возвращает сохраненное значение i.
Спойлер: СХЕМА Примерно такой алгоритм, если сумма двух соседних элементов. Задача очень размыто звучит, если ищешь наибольшую сумму 10 элементов, то это сумма всех элементов, если они положительные, конечно