24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310

На какое наименьшее число прямоугольников можно расчертить лист

21.06.2019, 15:48. Показов 4027. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Перед Женей лежит белый лист размера N х М клеток. Часть клеток Женя закрасила синим, а оставшуюся часть она хочет расчертить на прямоугольники. Прямоугольник должен содержать только белые клетки, грани прямоугольника проходят по граням клеток. На какое наименьшее число прямоугольников она может расчертить свой лист?
Первая строка содержит N>=1 и М<=12. Следующие N строк содержат
no M чисел в каждой: 1 если клетка синяя, 0 если белая
Вывести одно число: минимальное число прямоугольников.

Мне из условия не совсем понятно, считать ли одну белую клетку за прямоугольник, поэтому я решил что они тоже подойдут.
Фактически, надо подсчитать число клеток с 0 и если соседние клетки с 0 имеет общую грань, то их считать за один прямоугольник.





Мое решение выглядит как-то так:
Python
1
2
3
4
5
6
7
8
9
N = int(iput())
M = int(iput())
sroki = range(N)
for i in sroki:
    x = int(input()) // ввод значения 0 или 1
prg = 0 //начально число прямоугоьников
if x[i]=x[i+1]:
    prg +=1
print(prg)
Но как вводить именно для каждой строки M раз значения x я не знаю. Помогите, пожалуйста, исправить. Заранее большое спасибо_))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2019, 15:48
Ответы с готовыми решениями:

Какое число можно брать как начальное число разбиений в методе средних прямоугольников?
Какое число можно брать как начальное число разбиения в методе средних прямоугольников, если интервал разбиения от0 до числа пи

Какое наименьшее число Z можно получить вставкой цифры X в четырёхзначное число Y
Какое наименьшее число Z можно получить вставкой цифры X в четырёхзначное число Y. Ведущие нули не допустимы. Формат ввода: X Y ...

Определить, за какое наименьшее количество вопросов можно угадать задуманное число
Помогите пожалуйста. Некто загадал число от 1 до N. За какое наименьшее количество вопросов (на которые он отвечает &quot;да&quot; или...

12
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.06.2019, 16:24
Одну клетку считать, почему нет?
Задача не такая простая, как вам кажется. На сколько прямоугольников ваш алгоритм разобьёт следующую фигуру?
Code
1
2
3
. X .
X X X
X X X
Правильный ответ - 2.

Добавлено через 4 минуты
Похоже, решается жадным алгоритмом.
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
21.06.2019, 16:32
Цитата Сообщение от dondublon Посмотреть сообщение
Правильный ответ - 2.
а по мне так 3 если брать по вертикали то первый прямоугольник это 2 икса первого столбика потом 3 второго и опять 2 третьего. не сказано же что прямоугольники должны быть равны
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.06.2019, 17:13
Semen-Semenich, надо ж наименьшее число.
Тогда два - верхний 1*1 и нижний 3*2.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
21.06.2019, 18:23
Python
1
2
3
4
5
6
7
8
9
n, m = input().split(' ')
n = int(n)
m = int(m)
 
arr = []
for _ in range(n):
    arr.append(input().split(' '))
 
print(arr)
Code
1
2
3
4
2 3
1 0 1
1 0 1
[['1', '0', '1'], ['1', '0', '1']]
1
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
21.06.2019, 18:33
dondublon, упустил что наименьшее количество
Цитата Сообщение от dondublon Посмотреть сообщение
Тогда два - верхний 1*1 и нижний 3*2
ну 1*1 это клетка квадрат а не прямоугольник. тогда один, откинув верхний не закрашенный квадрат
.х.
и оставив один большой прямоугольник 3*2
ххх
ххх
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
21.06.2019, 18:45
Semen-Semenich, 1*1 - это маленький прямоугольник. Квадрат, кстати, тоже прямоугольник
Откидывать его мы не имеем права, это минус один прямоугольник получается.
0
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
21.06.2019, 20:28  [ТС]
а можно тогда реализовать алгоритм следующим образом:
1) проверять все соседние четыре квадрата, если данный квадрат находится не у края
Python
1
2
if x [i,j]==x[i+1,j] or x [i,j]==x[i,j+1] or x [i,j]==x[i-1,j] or x [i,j]==x[i,j-1] :
     prg +=1
2) если у края, то использовать другой подход

При этом надо как-то соотнести m и n с i и j
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
24.06.2019, 11:07
catauggie, думаю, проверять соседние 4 смысла нет.
Жадный алгоритм (посмотрите, что это).
Идём сверху вниз и слева направо. Это не строго, просто для определённости.
Берём верхние точки нашей фигуры, их них - левую.
От этой точки идём вправо, пока можем (т.е. пока непрерывный ряд точек не закончится). Получили верхнюю сторону прямоугольника.
Теперь идём вниз этой стороной, тоже пока можем. Тут чуток сложнее, т. к. надо просмотреть все точки в ряду, а не одну.
Как упёрлись - всё, получили очередной прямоугольник, его "вычитаем" из фигуры. Кстати, делить всё изображение на фигуры необязательно.
Ну и всё, повторяем, пока есть нерассмотреные точки.
Если есть возможность - используйте numpy, будет меньше кода.
0
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
24.06.2019, 17:08  [ТС]
dondublon , а как это реализовать в Python? Про жадный алгоритм я слышал, но как применить на практике не знаю.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
24.06.2019, 17:26
Что именно реализовать? Всю программу? Я редко пишу готовые программы.
Алгоритм-то понятен? Могу сделать поясняющий рисунок, если нет.
Давайте вы начнёте, будут какие-то конкретные вопросы - спрашивайте.
0
24 / 5 / 0
Регистрация: 20.09.2018
Сообщений: 310
24.06.2019, 20:04  [ТС]
я просто не знаю как написать жадный алгоритм на питоне. если бы какие-нибудь материалы понятные прочесть
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
25.06.2019, 10:11
catauggie, жадный алгоритм - это не какой-то конкретный алгоритм, это просто довольно общий способ решения задач, когда на каждой итерации берём по максимуму для нашего решения, без особых раздумий, как в ДП.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2019, 10:11
Помогаю со студенческими работами здесь

Выяснить за какое наименьшее число телепортаций можно переместиться на другую планету
Как-то после тяжелого дня в школе с уроками астрономии, физики и экономики в голове Митиньке все перемеша- лось, и парню приснился...

За какое наименьшее число ходов можно собрать количество камней каждого цвета не меньшее необходимого для победы
В любимой настольной игре Эдварда есть камни трех цветов: зеленого, белого и красного. За один ход можно взять либо три камня, по одному...

Какое наименьшее число можно записать в виде суммы простых чисел по крайней мере 5000 различных способов?
Число 10 можно записать в виде суммы простых чисел ровно пятью различными способами: 7 + 3 5 + 5 5 + 3 + 2 3 + 3 + 2 + 2 2 + 2 +...

Какое наибольшее и какое наименьшее число минимальных остовных деревьев может иметь граф
Здравствуйте. 1. Какое наибольшее и какое наименьшее число минимальных остовных деревьев может иметь граф на n вершинах и с n рёбрами,...

Определите, какое наименьшее число операций необходимо, чтобы получить из числа 1 число N
Имеется калькулятор, который выполняет три операции: 1. Прибавить к числу X единицу. 2. Умножить число X на 2. 3. Умножить число X на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru