Помогите решить задачу, задача школьного конкурса (а мы дальше массивов не проходили так что ж |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Помогите решить задачу, задача школьного конкурса (а мы дальше массивов не проходили так что ж |
Виликан |
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: 0 |
4. Морской бой. Параллельно береговой линии в море стоит вражеский флот. Полоса, в которой расположен флот, условно разбита на N квадратов. На главном корабле нашего флота находится секретное орудие, которое может нанести удар сразу по k смежным (т.е. подряд идущим) квадратам. Все вражеские корабли, находящиеся в пораженных квадратах будут уничтожены. К сожалению, у секретного орудия есть всего один заряд, поэтому требуется всего одним выстрелом нанести максимальный урон противнику.
Задание. Напишите программу battle, определяющую максимальное количество кораблей, которое может быть уничтожено одним выстрелом. Входные данные. В первой строке записаны два целых числа N и k (1<=k<=N< 100000). Во второй строке задаются N целых чисел Ai, каждое из которых определяет количество кораблей в соответствующем квадрате полосы (0 < Ai < 10000). Выходные данные. В единственной строке выведите наибольшее количество кораблей, которые могут быть уничтожены. Примеры входных и выходных данных ввод вывод 7 3 . 1 3212321 . Добавлено через 1 мин. если кому лень писать решение, то хоть натолкните на мысль... пожалуйста Сообщение отредактировано: Виликан - |
Lapp |
Сообщение
#2
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
если кому лень писать решение, то хоть натолкните на мысль... Дело не в лени )). Помочь можно, не хочется писать все за тебя.А какая тут может быть "идея"? Тут все прозрачно.. Сначала считаешь сумму s по первым k квадратам, также присваиваешь ее переменной max. Потом делаешь цикл от i=k+1 до n - вычитаешь из s содержимое i-k квадрата и прибавляешь содержимое i квадрата. Если s больше max, то кладешь s в max. Вот и все. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Виликан |
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Реальное имя: Виталий Репутация: 0 |
Спасибо большое! Ну для вас это конечно просто и понятно, но мне, человеку который в сумме месяца 3 учит паскаль это не всегда "прозрачно"...
Еще раз спасибо. |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Нет проблем, заходи еще. Если ты не за готовым решением приходишь - мы поможем.
По сути, то, что я написал выше, годится не только для Паскаля - это алгоритм. На всякий случай пишу то же самое на Паскале - проверь себя: s:= 0; -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 23.12.2024 20:50 |