В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
19557
19557
30.08.2021 00:39 •  Информатика

Коля изобрёл машину времени у себя в гараже и решил на этом заработать. но так как он знает, что организация контроля времени может забрать у него машину, он решил вести себя осторожнее и использовать рынок ценных бумаг в качестве источника дохода.
он отправился в будущее, посмотрел там котировок по акциям компании fais. компания примечательна тем, что один человек может держать только одну акцию. но когда коля увидел , он понял, что сам не сможет вычислить, когда нужно покупать акцию, а когда продавать. тогда он обратился за к вам, пообещав отдать половину заработанных денег.
вам прекрасно известно, что за подобные махинации могут оштрафовать или даже посадить в тюрьму, и вы решили посчитать, стоит ли участвовать в этом. вы уже решали подобную алгоритмическую пару лет назад и смогли найти свой старый код. к сожалению, его производительности не хватает, чтобы посчитать результат за адекватное время.
вам нужно оптимизировать представленную программу, которая вычисляет максимально возможный доход из всех возможных, опираясь на данные котировок. при этом не нужно учитывать деньги, которые тратятся на покупку акций, так как коля собирается взять их со своего счёта.

ваш старый код
входные данные — массив чисел, каждое из которых отражает цену акции в конкретный день. выходные данные — одно число, обозначающее максимально возможную прибыль.

var maxprofit = function (prices) {
return calculate(prices, 0);
}

function calculate(prices, index) {
if (index > = prices.length) {
return 0;
}

var maxprofix = 0;

for (var start = index; start < prices.length; start++) {
var localmaxprofit = 0;
for (var i = start + 1; i < prices.length; i++) {
if (prices[start] < prices[i]) {
var profit = calculate(prices, i + 1) + prices[i] - prices[start];
if (profit > localmaxprofit) {
localmaxprofit = profit;
}
}
}

if (localmaxprofit > maxprofix)
maxprofix = localmaxprofit;
}
return maxprofix;
}
примеры работы
пример 1
вход: [71,11,51,31,61,41]

выход: 70

покупаем во второй день по цене 11 и продаём на третий день за 51, прибыль — 40. после этого покупаем за 31 в четвёртый день и продаем на пятый за 61, прибыль — 30. в итоге получаем прибыль 70.
пример 2
вход: [13,24,35,46,57]

выход: 44

покупаем в первый день, продаём в последний.
пример 3
вход: [700,612,445,343,10]

выход: 0

здесь вообще невозможно заработать, поэтому максимальная прибыль — 0.

примечания
в качестве решения предоставьте файл, который экспортирует исправленный вариант функции maxprofit:

function maxprofit(prices) {
//
}

module.exports = maxprofit;
решение будет запускаться в nodejs 12.

Показать ответ
Ответ:
ikonnikov1997
ikonnikov1997
18.12.2022 22:01

Басқа тілде оқу

Download PDF

Бақылау

Өңдеу

Ақпараттық қауіпсіздік — мемлекеттік ақпараттық ресурстардың, сондай-ақ ақпарат саласында жеке адамның құқықтары мен қоғам мүдделері қорғалуының жай-күйі.

Ақпаратты қорғауӨңдеу

Ақпаратты қорғау — ақпараттық қауіпсіздікті қамтамасыз етуге бағытталған шаралар кешені. Тәжірибе жүзінде ақпаратты қорғау деп деректерді енгізу, сақтау, өңдеу және тасымалдау үшін қолданылатын ақпарат пен қорлардың тұтастығын, қол жеткізулік оңтайлығын және керек болса, жасырындылығын қолдауды түсінеді. Сонымен, ақпаратты қорғау - ақпараттың сыртқа кетуінің, оны ұрлаудың, жоғалтудың, рұқсатсыз жоюдың, өзгертудің, маңызына тимей түрлендірудің, рұқсатсыз көшірмесін жасаудың, бұғаттаудың алдын алу үшін жүргізілетін шаралар кешені

0,0(0 оценок)
Ответ:
kekIvanovi4
kekIvanovi4
31.03.2020 07:57
Class OftenChar{
 public static void main(String args[]){
  java.util.Scanner in = new java.util.Scanner(System.in);
  String string = in.nextLine(); char chars[] = new char[4];
  chars[0] = in.nextLine().charAt(0); chars[2] = in.nextLine().charAt(0);
  for(int sChar = 0; sChar<string.length(); sChar++)
   if(string.charAt(sChar)==chars[0])chars[1]++;
   else if(string.charAt(sChar)==chars[2])chars[3]++;
  System.out.print("\n"+(chars[1]==chars[3]?chars[0]+""+chars[2]:chars[1]>chars[3]?chars[0]:chars[2]));
 }
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота