Ваши теги включают greedy
. Жадный подход может выглядеть следующим образом:
Сортировать начало и конечные sh x-координаты вместе с соответствующими индексами корабля.
Пройти по списку конечных sh. Если индекс текущего элемента отмечен - игнорируйте его, в противном случае отметьте индексы для всех начальных элементов до текущей координаты и стреляйте по текущей координате.
Для данного примера вы будете стрелять по 3, 6 и 8
Три списка / массива. Один содержит пары (start[i]; i)
, другой - пары (end[i]; i)
, третий - boolean[N]
для отметок.
Первый элемент в конечном списке - 3 для корабля (0,3,1). Таким образом, мы стреляем и убиваем (отмечаем) корабли (0,3,1), (1,4,0) и (1,4,4), потому что их старты меньше 3.