Это требует O(n^3)
времени из-за того факта, что в трех циклах увеличиваются три различные переменные . То есть, когда один внутренний цикл закончен, это не влияет на внешний цикл. Внешний цикл выполняется столько раз, сколько он должен был работать до того, как был введен внутренний цикл.
И это проблема максимальной смежной суммы подмассивов. Самоочевиден, когда вы видите пример:
{99, 1} => returns 100
{-1, -2, -3} => return -1
{-1, 5, -2} => returns 5
{99, -3, 0, 1} => returns 99
Существует отличный алгоритм, известный как алгоритм Кадане (сделайте это для Google), который решает это за O(n)
время.
Вот так:
Initialize:
max_so_far = 0
max_ending_here = 0
Loop for each element of the array
(a) max_ending_here = max_ending_here + a[i]
(b) if(max_ending_here < 0)
max_ending_here = 0
(c) if(max_so_far < max_ending_here)
max_so_far = max_ending_here
return max_so_far
Класс Bitmap - это реализация класса Image. Класс Image - это абстрактный класс
Класс Bitmap содержит 12 конструкторов, которые конструируют объект Bitmap из различных параметров. Он может создать растровое изображение из другого растрового изображения и строкового адреса изображения.
Подробнее см. в этом исчерпывающем примере .
Image обеспечивает абстрактный доступ к произвольному изображению, он определяет набор методов, которые могут логически применяться к любой реализации Image. Это не связано с каким-либо конкретным форматом изображения или реализацией. Bitmap - это конкретная реализация абстрактного класса изображения, который инкапсулирует объект растрового изображения GDI Windows. Bitmap - это просто конкретная реализация абстрактного класса Image, который передает объект растрового изображения GDI.
Вы можете, например, создать свою собственную реализацию для абстрактного изображения, унаследовав от класса Image и реализовав абстрактные методы.
] В любом случае, это всего лишь простое базовое использование ООП, его нетрудно уловить.