39 / 2 / 3
Регистрация: 16.11.2015
Сообщений: 103
|
|
1 | |
Определить вписанный в решётку прямоугольник максимальной площади12.12.2015, 17:03. Показов 2666. Ответов 7
Метки нет (Все метки)
На квадратном клетчатом листе бумаги 8x8 клеток заштрихована часть клеток (пример на рисунке). Определить вписанный в решётку прямоугольник максимальной площади, не содержащий заштрихованных клеток. В качестве ответа вывести площадь прямоугольника и координаты его двух противоположных вершин. (Предполагается, что прямоугольник с максимальной площадью один.)
Для приведенного примера координаты вершин (3,4) и (7,6), площадь 15 клеток. Объясните по подробнее плиз алгоритм поиска этого прямоугольника
0
|
12.12.2015, 17:03 | |
Ответы с готовыми решениями:
7
Определить вписанный в решётку прямоугольник максимальной площади, не содержащий заштрихованных клеток Определить вписанный в решётку прямоугольник максимальной площади, не содержащий заштрихованных клеток На сколько равных квадратов максимальной площади можно разделить прямоугольник Треугольник вписанный в прямоугольник |
Модератор
|
|
12.12.2015, 20:30 | 2 |
Сообщение было отмечено msk19 как решение
Решение
Первое, что приходит на ум:
1. Принимаем максимум равным нулю. 2. Просматриваем матрицу по порядку слева-направо и сверху-вниз, пропуская заштрихованные клетки. 3. Когда находится белая клетка, начинаем исследовать: 3.1. Пытаемся расширить прямоугольник вправо на максимальное число клеток. 3.2. Пытаемся расширить прямоугольник вниз на максимальное число клеток. 3.3. Вычисляем площадь прямоугольника 3.4. Если площадь больше максимума, то запоминаем новое значение и координаты прямоугольника. 3.5. Уменьшаем правую границу на 1 клетку влево 3.6. переход к п.3.2. 3.7. Выполнять п.п.3.2-3.6 пока ширина больше 1 клетки. 4. Переход к п.2 - ищем следующую клетку. Ещё можно попробовать воспользоваться ситуацией - малый размер матрицы и кратность 8 (ассоциации с 8 бит). При помощи битовых операций AND и выделения маски прямоугольников, вычисления длин битовых последовательностей 1 и 0. Но это наверное даже сложнее.
1
|
39 / 2 / 3
Регистрация: 16.11.2015
Сообщений: 103
|
|
12.12.2015, 21:40 [ТС] | 3 |
вроде понял
п.3.5 .Вы предлагаете уменьшать правую границу именно найденного не заштрихованного прямоугольника? А если : 1. Принимаем максимум равным нулю. 2. Просматриваем матрицу по порядку слева-направо и сверху-вниз, пропуская заштрихованные клетки. 3. Когда находится белая клетка, начинаем исследовать: 3.1. Пытаемся расширить прямоугольник вправо на максимальное число клеток. 3.2. Пытаемся расширить прямоугольник вниз на максимальное число клеток. 3.3. Вычисляем площадь прямоугольника 3.4. Если площадь больше максимума, то запоминаем новое значение и координаты прямоугольника. 3.5. Переход к п.2.Находим все возможные прямоугольники и запоминаем максимальный 3.6. Уменьшаем правую границу первоначального квадрата 8х8 на 1 клетку влево ,чтоб получилось 8х7 3.6. Переход к п.2. 3.7. Выполнять п.п.3.2-3.6 пока ширина больше 1 клетки. Получится???
0
|
Модератор
|
|
12.12.2015, 22:14 | 4 |
Сообщение было отмечено msk19 как решение
Решение
Думаю - нет.
То о чем я писал можно проиллюстрировать так. Здесь уже были просмотрены другие белые клетки, поэтому Smax уже не ноль. И вот найдена очередная белая клетка (3,4). Дальше на картинках
1
|
Модератор
|
|
12.12.2015, 22:24 | 5 |
Сообщение было отмечено msk19 как решение
Решение
Так несколько подробнее
1
|
39 / 2 / 3
Регистрация: 16.11.2015
Сообщений: 103
|
||||||
13.12.2015, 20:10 [ТС] | 6 | |||||
ясно
спасибо большое Добавлено через 18 часов 28 минут никак не получается записать пункты 3.1-3.2 Идея такая: 1.найти очередной белый квадратик 2.запомнить его начальную координату по горизонтали 3.начать наращивать прямоугольник вправо,пока не наткнусь на черный квадрат 3.5. запомнить длину этого прямоугольника и его конечную точку 4.увеличить координату по вертикали на 1 в начальной точке прямоугольника или в конечной, если там белый квадратик, тогда п.5 5.начать проверять есть ли черные квадраты на очередной строчке ,если нету тогда найти площадь,если есть закончить наращивание прямоугольника Но когда начинаю писать программу,она на столько запутывается ,что ничего не получается Добавлено через 2 часа 33 минуты
0
|
Модератор
|
|
13.12.2015, 22:56 | 7 |
Попробуйте самостоятельно. У меня закончились выходные и до следующих я выпадаю из общественной жизни.
Для облегчения программирования и поиска ошибок воспользуйтесь форматтером кода JCF (он с прибабахами, но с ним лучше, чем без него). А также, избавьтесь, по возможности, от глобальных переменных. Давайте переменным осмысленные имена. Не брезгуйте комментариями. Это излишнее. Тут правильнее увеличить вертикальную координату на 1, проверить, что новая координата <=8, а потом проверить всю подстроку на отсутствие 1 (черных квадратов).
1
|
39 / 2 / 3
Регистрация: 16.11.2015
Сообщений: 103
|
||||||
13.12.2015, 23:44 [ТС] | 8 | |||||
решил) Правда по другому алгоритму,нужно взять координату одной левой верхней точки ,начиная с начала и перебирать для нее координаты всех правых нижних точек начиная с точки (8,8),до тех пор ,пока не найдется прямоугольник без единиц
0
|
13.12.2015, 23:44 | |
13.12.2015, 23:44 | |
Помогаю со студенческими работами здесь
8
Пятиугольник вписанный в прямоугольник Прямоугольник, вписанный в прямоугольник Определить треугольники минимальной и максимальной площади, которые можно построить из отрезков Определить треугольники минимальной и максимальной площади, которые можно построить из отрезков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |