Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2012, 21:57   #1
sancho123
 
Регистрация: 20.02.2010
Сообщений: 4
Радость Получение всех возможных прямоугольников из массива точек (любой язык)

Доброго времени суток!
Я уже давно не студент. Просто не нашел раздела для алгоритмов.
Есть матрица из 0 и 1.
0 - свободная точка.
1 - занятая точка.

Нужно найти все возможные прямоугольники.
Прямоугольники должны покрывать всю пустую область (она образована нулями) и могут пересекаться, но не должны быть друг в друге.

Результат нужно записать в массив записей:
X,Y,W,H (строка, столбец, ширина, высота).

Пример:
00000
00000
10100
10100

Результат:
0,0,5,2
1,0,1,4
3,0,2,4

В графическом виде


Возможен ли параллельный алгоритм?
Если нет, буду рад любому работающему алгоритму на любом языке программирования.
Желательно С#.

Последний раз редактировалось sancho123; 29.04.2012 в 22:30. Причина: ошибки
sancho123 вне форума Ответить с цитированием
Старый 29.04.2012, 22:08   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Непонятно как условие, так и решение.
На мой взгляд условию "Прямоугольники должны покрывать всю пустую область" удовлетворяет один единственный прямоугольник - размером со всю область. Других прямоугольников, удовлетворяющих этому условию, нет.
Непонятно в каком виде записано решение. Что означают эти цифры?
s-andriano вне форума Ответить с цитированием
Старый 29.04.2012, 22:29   #3
sancho123
 
Регистрация: 20.02.2010
Сообщений: 4
По умолчанию

Да. Немного поспешил. Исправил ошибки в первом сообщении.
sancho123 вне форума Ответить с цитированием
Старый 29.04.2012, 22:33   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

так что нужно получить на выходе?
Чем не устраивает вариант с единственным прямоугольником, покрывающим всю область?
Среди прямоугольников, приведенных в решении, нет ни одного, который бы удовлетворял условию задачи. Как это понимать?

Последний раз редактировалось s-andriano; 29.04.2012 в 22:36.
s-andriano вне форума Ответить с цитированием
Старый 29.04.2012, 22:57   #5
sancho123
 
Регистрация: 20.02.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
так что нужно получить на выходе?
Чем не устраивает вариант с единственным прямоугольником, покрывающим всю область?
Среди прямоугольников, приведенных в решении, нет ни одного, который бы удовлетворял условию задачи. Как это понимать?
Как может один прямоугольник может покрыть всю область непрямоугольной формы???

На рисунке их 3.
Серым изобразил занятые области. Все остальное - свободная область.

"Прямоугольники должны покрывать всю пустую область"
Напишу иначе:
Нужно покрыть свободную область прямоугольниками так, чтобы в ней не осталось свободных(незанятых) точек.
sancho123 вне форума Ответить с цитированием
Старый 29.04.2012, 23:24   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от sancho123 Посмотреть сообщение
Напишу иначе:
Нужно покрыть свободную область прямоугольниками так, чтобы в ней не осталось свободных(незанятых) точек.
Это совершенно другое условие.

И как понимать это?
Цитата:
Нужно найти все возможные прямоугольники.
Нужно найти все возможные варианты покрытия?
s-andriano вне форума Ответить с цитированием
Старый 29.04.2012, 23:35   #7
sancho123
 
Регистрация: 20.02.2010
Сообщений: 4
По умолчанию

"Нужно найти все возможные варианты покрытия?"

Да. Спасибо за помощь в формулировании условия
sancho123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинаторика. Получение возможных вариантов. Alex Cones Общие вопросы Delphi 3 16.01.2011 13:52
Интересная задача, реализация временных логик (любой логики), язык любой. Flyym Помощь студентам 1 05.01.2011 03:10
Перебор всех возможных вариантов phenix Помощь студентам 3 03.12.2010 21:29
Перебор всех возможных сумм элеметов массива Sanakan Помощь студентам 3 29.03.2010 00:28