Несложная задачка по программированию (можно на любом языке):
Вася решил заняться торговлей рыбой. С помощью методов машинного обучения он предсказал цены на рыбу на N дней вперёд. Он решил, что в один день он купит рыбу, а в один из следующих дней — продаст (то есть совершит или ровно одну покупку и продажу или вообще не совершит покупок и продаж, если это не принесёт ему прибыли). К сожалению, рыба — товар скоропортящийся и разница между номером дня продажи и номером дня покупки не должна превышать K.
Определите, какую максимальную прибыль получит Вася.
Формат ввода
В первой строке входных данных задаются числа N и K (1 ≤ N ≤ 10000, 1 ≤ K ≤ 100).
Во второй строке задаются цены на рыбу в каждый из N дней. Цена — целое число, которое может находится в пределах от 1 до 109.
Формат вывода
Выведите одно число — максимальную прибыль, которую получит Вася.
ПРИМЕР:
Вввод: 5 2
1 2 3 4 5
Вывод:
2

17 Июн 2019 в 19:44
356 +1
0
Ответы
1

// Решение на языке программирования Java

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int K = scanner.nextInt();
int[] prices = new int[N];

for (int i = 0; i < N; i++) {
prices[i] = scanner.nextInt();
}
int maxProfit = 0;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < Math.min(N, i + K + 1); j++) {
int profit = prices[j] - prices[i];
if (profit > maxProfit) {
maxProfit = profit;
}
}
}
System.out.println(maxProfit);
}

}

21 Апр 2024 в 00:59
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир