Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Почем вы решили, что вернётся неправильная сумма?
n может быть чем-то иным, кроме как длиной последовательности я, например, не мог… Длина массива, как известно, в C/C++ в функцию не передаётся, а если вы её туда передали отдельно, то, вроде как, больше аргументов-то и нету…Несмотря на сложности алгоритмического программирования, существует достаточно короткий список принципов, необходимых для решения задач.
sum = sum — data[i — k] + data[i];
У вас неправильное графическое представление 2 задачи на рисунке.
По словесному описанию и по алгоритму, реализованному на С++, мы сбрасываем последовательность только текущая сумма становится < 0.
Смотрим на графическое решение:
curSum = 14
...
... sum([-3, -5, 0, -4]) = -12, curSum = 2 // почему-то происходит сброс подпоследовательности и дальше считается отдельно:
curSum [2] = 4
curSum [2, 3] = 7
curSum [2, 3, 1] = 8
Что общего у собеседования кодера и игры «Змейка»?