2 / 2 / 0
Регистрация: 28.03.2020
Сообщений: 31
|
|
1 | |
Найти прямоугольную область белого цвета состоящую из наибольшего количества ячеек01.11.2020, 12:24. Показов 5246. Ответов 12
В прямоугольной таблице клетки раскрашены в белый и черный цвета. Найти в ней прямоугольную область белого цвета, состоящую из наибольшего количества ячеек.
Входные данные: Во входном файле INPUT.TXT записана сначала высота N, а затем ширина M таблицы (1≤N≤100, 1≤M≤100), а затем записано N строк по M чисел в каждой строке, где 0 означает, что соответствующая клетка таблицы выкрашена в белый цвет, а 1 — что в черный. Выходные данные: В выходной файл OUTPUT.TXT вывести одно число — количество клеток, содержащихся в наибольшем по площади белом прямоугольнике. Примеры: Ввод: 5 6 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 Вывод: 9
0
|
01.11.2020, 12:24 | |
Ответы с готовыми решениями:
12
Найти вероятность вытащить шарик белого цвета с первого раза Найти вероятность того, что шар будет белого цвета Найти минимальное число вирусов с помощью которых можно заразить прямоугольную область Найти вероятность того, что все три извлечённых шара оказались белого цвета |
1 / 1 / 0
Регистрация: 28.08.2023
Сообщений: 32
|
||||||
20.07.2024, 16:08 | 2 | |||||
Отвечаю поздно, но возможно помогу последователям!
1(как мне кажется самое важное). Эта задача сводится к задаче "Гистограмма". 1.1 "Гистограмма" - Задача, в которой имеется n небоскрёбов разно высоты, и нужно повесить ПРЯМОУГОЛЬНЫЙ плакат максимальной площади. Например, n = 7, и высоты небоскрёбов такие 2 1 4 5 1 3 3. Ответ на этот тест будет 8 (Плакат весит на небоскребах под номерами (3, 4) так, что 3ий небоскрёб полностью закрыт плакатом, а 4ый почти закрывает небоскрёб (не достаёт до 5 клетки) => 2 * 4 = 8). Решение за O(N2)
Пусть текущим является i-ый прямоугольник абсциссой i и высотой hi. Тогда: Если его высота больше высоты прямоугольника на вершине стека, то заносим i-ый прямоугольник в стек. Пока высота текущего прямоугольника (i, hi) меньше или равна высоте прямоугольника на вершине стека (x, hx) (то есть hi ≤ hx), то извлекаем прямоугольник из стека и вычисляем площадь максимального вписанного в гистограмму прямоугольника. Подозрительным на максимальный будет прямоугольник со сторонами i – x (он начинается в абсциссе x и заканчивается в абсциссе i – 1) и hx. Пусть последний вытолкнутый из стека прямоугольник ширины 1 имеет характеристики (j, hj) (hj ≥ hi). Тогда в стек следует положить пару (j, hi). 2. Ну так вот, теперь, когда мы умеем решать задачу про гистограмму, можно решить и про максимальный прямоугольник белого цвета. Оказывается, что мы можем сделать цикл который будет идти сверху -> вниз по матрице и делать "небоскрёбы" из 0 в матрице. Разберу подробней. Есть изначальная матрица: 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 для i = 1 (цикл) высоты из нолей -> 0 1 1 1 0 1, мы как бы отделяем i сверху строчек: 1 0 0 0 1 0 - 1ая строчка, тогда для каждого столбца в строчке считаем максимальную длину из 0 вверх(0 не должны ------------ прерываться 1, и эта последовательность должная начинаться в самой нижней строке, которую мы отделили. 0 0 0 0 1 0 Считаем гистограмму для этого ряда - ответ 3. 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 для i = 2 (цикл) высоты из нолей -> 1 2 2 2 0 2, мы также отделяем i сверху строчек: 1 0 0 0 1 0 - 2 строчки. 0 0 0 0 1 0 Считаем гистограмму для этого ряда - ответ 6. ------------ 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 для i = 3 (цикл) высоты из нолей -> 2 3 0 3 1 3, мы также отделяем i сверху строчек: 1 0 0 0 1 0 - 3 строчки. 0 0 0 0 1 0 Считаем гистограмму для этого ряда - ответ 4. 0 0 1 0 0 0 ------------ 0 0 0 0 0 0 0 0 1 0 0 0 для i = 4 (цикл) высоты из нолей -> 3 4 1 4 2 4, мы также отделяем i сверху строчек: 1 0 0 0 1 0 - 4 строчки. 0 0 0 0 1 0 Считаем гистограмму для этого ряда - ответ 6. 0 0 1 0 0 0 0 0 0 0 0 0 ------------ 0 0 1 0 0 0 для i = 5 (цикл) высоты из нолей -> 4 5 0 5 3 5, мы также отделяем i сверху строчек: 1 0 0 0 1 0 - 5 строчки. 0 0 0 0 1 0 Считаем гистограмму для этого ряда - ответ 9. 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 ------------ Вот и всё, теперь находим максимум среди всех полученных цифр(максимум не обязательно достигается на последнем шагу!!!) max(3, 6, 4, 6, 9) = 9 - это и есть наш ответ.
0
|
Вездепух
12771 / 6653 / 1791
Регистрация: 18.10.2014
Сообщений: 16,817
|
|
20.07.2024, 19:04 | 3 |
Задача по определению не допускает решения быстрее чем за O(NM).
Обе задачи легко решаются достаточно наглядным алгоритмом: 0. Будем считать, что индексы в матрицах растут сверху-вниз, слева-направо 1. В дополнительной матрице S[N][M] будем хранить пары размеров [w, h] максимального прямоугольника с правым-нижним углом в этой точке 2. Для элемента S[i][j] результат можно получить на основе анализа и сравнения значений в S[i-1][j] и S[j][i-1]. 3. Начальный значения для S[0][] или S[][0] (или обоих) назначаются тривиально.
0
|
Вездепух
12771 / 6653 / 1791
Регистрация: 18.10.2014
Сообщений: 16,817
|
|
21.07.2024, 08:05 | 4 |
0
|
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,081
|
||||||
22.07.2024, 01:53 | 5 | |||||
Ввод:
5 6 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 Если эту штуку распрямить, то получиться массив флагов. Узнать, стоит ли над нулём ноль, можно отняв шесть по индексу. Если под курсором ноль, (традиционное сканирование) И отнять шесть тоже ноль, можно засчитывать как количество нулей прямоугольника. Добавлено через 7 минут Сложновато конечно. Не плюсы и не для начинающих. Добавлено через 2 минуты Здесь надо считать одновременно несколько прямоугольников. Добавлено через 30 минут Бывает массив счётчиков. Ячейки инкреминируют. Типа
Шестизначный? И привязать к столбам?
0
|
22.07.2024, 09:29 | 6 | |||||
Наталья8, в инете полно решений данной задачи. Вот одна из них. Сложность O(n*m).
1
|
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,081
|
||||||
23.07.2024, 01:30 | 7 | |||||
Ты конечно очень шустрый такой молодой человек.
Только не работает этот мусор ни хрена.
0
|
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,081
|
|
23.07.2024, 01:32 | 8 |
Согласен, может там условия были не такие,
или он вообще не из той оперы... Я принципиально проверил.
0
|
23.07.2024, 02:23 | 9 |
Наталья8, выложенный мной код выводит площадь наибольшего черного прямоугольника (состоящего из единиц), а не белого (состоящего из 0). У ТС в условии сказано считать белые, поэтому там 9, а у тебя 2.
Неужели так сложно переделать код под условие?
0
|
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
|
||||||
23.07.2024, 07:33 | 10 | |||||
0
|
447 / 315 / 62
Регистрация: 09.03.2016
Сообщений: 3,081
|
|
23.07.2024, 13:18 | 11 |
0
|
Вездепух
12771 / 6653 / 1791
Регистрация: 18.10.2014
Сообщений: 16,817
|
||||||
31.07.2024, 08:11 | 12 | |||||
Довел до некоего работоспособного варианта свой подход с анализом левого и верхнего соседа. В каждой клетке таблицы хранится набор прямоугольников-кандидатов на максимальность с правым-нижним углом в этой клетке.
Код
1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 * * * 0 0 0 * * * 0 0 1 * * * 9
0
|
Вездепух
12771 / 6653 / 1791
Регистрация: 18.10.2014
Сообщений: 16,817
|
||||||
01.08.2024, 07:32 | 13 | |||||
Без лишнего вывода исходной матрицы:
Кликните здесь для просмотра всего текста
https://coliru.stacked-crooked... 05a64ffd57
0
|
01.08.2024, 07:32 | |
01.08.2024, 07:32 | |
Помогаю со студенческими работами здесь
13
Прямоугольную матрицу A, состоящую из двух столбцов и N (вводится с клавиатуры) строк заполнить натуральными случайными Найти вариант размещения на столе наибольшего количества костей Шар белого цвета Найти в предложении слово состоящее из наибольшего количества разных букв Найти в тексте первое слово состоящее из наибольшего количества цифр Найти в предложении слово, состоящее из наибольшего количества разных букв. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |