Тут вы правы — если автору предыдущего топика было неважно продавать или покупать, то все, что ему нужно было сделать, это max(A)-min(A). :)
Но я все же хотел рассмотреть решение maximum-subarray в чистом виде.
Суть поняли правильно, но ситуация, которую вы описали невозможна, так как с любой момент времени currentMin — это минимум на промежутке от 0 до i, а за «максимум» на каждой итерации мы принимаем i-ый элемент.
Для двухмерного варианта задача решается точно также динамически за O(n^2). currentMin(i, j) определяется как min(currentMin(i, j-1), currentMin(i-1, j), A[i,j]). Cумма чисел в прямоугольнике вычисляется как S(i,j, u, k) = S(0, 0, u, k) — S(0, 0, u, j) — S(0, 0, k, i) + S(0, 0, i, j).
Если хотите, я могу подробно описать алгоритм в отдельной статье.
Так вы бы так и написали: Принцип «разделяй и властвуй» может помочь вас оптимизировать ваши алгоритмы. Сейчас я вам покажу, как этот принцип работает на такой-то задаче…
Вы же описывали решение конкретной задачи.
Фух, по меньшей мере один нормальный человек есть. Мне плеваться захотелось, когда я увидел статью в разделе «Алгоритмы» с очевидно не оптимальным решением тривиальной задачи.
Т.е. у машины есть ее реальные текущее свойства, которые readonly, и ее текущая конфигурация, с которую мы при необходимости изменяем и на основе которой машина себя подстраивает.
В этом случае «начали менять одно, получилось другое» выглядит куда более логично. Особенно, если мы вместо vm.set_memory() будем делать vm.send_desired_mem().
Я не слишком силен в идеологиях, так что не совсем понял, что вам мешает с помощью REST устанавливать desired_mem, а не current_mem, а машина уже будет стремится приблизить свой current_mem к desired_mem?
Версиями типа 0.1 у некоторых разработчиков принято обозначать альфы/беты нового продукта, который уже можно как-то использовать, но он еще не готов настолько, чтобы стать первой версией себя.
Бред, потому что arr[[1]], это элемент(item) объекта arr по ключу [1] (лист из одного элемента). Да, в листе не могут быть не числовые индексы, но ваше предложение не реализуемо на уровне синтаксического анализатора, питон то динамический.
> Только, боюсь, теперь я весь следующий год буду слышать, что Python переходит на нумерацию с 1 и его пора хоронить.
Ну так и что? Это же весело. :) Да хотя бы эта статья.
Ну здесь уже стоит пинать разработчика, а не паскаль. Я наоборот считал возможность задать способ индексации в паскале очень удобной фичей, т.к. иногда архи-полезной оказывалась индексация с -1 (динамическое програмированние, барьерные условия), не говоря уже о всяких array['a'..'z']
Вы никогда не пробовали на словах во время перекура коллеге объяснять что хранится в первом, а что во-втором элементе спика… э… простите, я имел ввиду по первому и второму индексу. Все-таки на словах путаница иногда возникает.
max(A)-min(A)
. :)Но я все же хотел рассмотреть решение maximum-subarray в чистом виде.
currentMin
— это минимум на промежутке от 0 до i, а за «максимум» на каждой итерации мы принимаем i-ый элемент.print max(A)-min(A)
, а во-вторых по условию минимум должен предшествовать максимуму.Если хотите, я могу подробно описать алгоритм в отдельной статье.
Вы же описывали решение конкретной задачи.
Я не слишком силен в идеологиях, так что не совсем понял, что вам мешает с помощью REST устанавливать desired_mem, а не current_mem, а машина уже будет стремится приблизить свой current_mem к desired_mem?
Ну так и что? Это же весело. :) Да хотя бы эта статья.
array['a'..'z']
var a : array[0..N] of integer;
?