Изображение по сравнению с Растровым классом

Это требует 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

Ссылки: 1 , 2 , 3 .

64
задан S.Serpooshan 28 February 2018 в 07:55
поделиться

2 ответа

Класс Bitmap - это реализация класса Image. Класс Image - это абстрактный класс

Класс Bitmap содержит 12 конструкторов, которые конструируют объект Bitmap из различных параметров. Он может создать растровое изображение из другого растрового изображения и строкового адреса изображения.

Подробнее см. в этом исчерпывающем примере .

64
ответ дан 24 November 2019 в 15:53
поделиться

Image обеспечивает абстрактный доступ к произвольному изображению, он определяет набор методов, которые могут логически применяться к любой реализации Image. Это не связано с каким-либо конкретным форматом изображения или реализацией. Bitmap - это конкретная реализация абстрактного класса изображения, который инкапсулирует объект растрового изображения GDI Windows. Bitmap - это просто конкретная реализация абстрактного класса Image, который передает объект растрового изображения GDI.

Вы можете, например, создать свою собственную реализацию для абстрактного изображения, унаследовав от класса Image и реализовав абстрактные методы.

] В любом случае, это всего лишь простое базовое использование ООП, его нетрудно уловить.

11
ответ дан 24 November 2019 в 15:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: