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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 12:57   #1
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию Поиск подматрицы в матрице

Предположим есть матрица:
0 1 0 1 0
0 1 0 0 0
0 1 0 1 0
Надо найти подматрицу
1 0 1
1 0 0
1 0 1

То есть может быть матрица любого размера, в ней надо выяснить входит ли в нее другая матрица и вывести True или False.

Что посоветуете, как лучше это сделать, может есть готовые компоненты или функции и не надо "изобретать велосипед". Если готовых решений нет, то как лучше записать алгоритм?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 14.04.2010, 15:09   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Ищи вхождение строки искомой подматрицы в строку исходной матрицы...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 14.04.2010, 21:25   #3
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
Ищи вхождение строки искомой подматрицы в строку исходной матрицы...
так не получиться к примеру
если исходная
0 0 0 0 0
0 1 1 1 0
1 1 1 0 0
0 1 1 1 0
0 1 1 1 0
надо поискать подматрицу 1 1 1
1 1 1
1 1 1
1 1 1
если проверять по строкам то программа скажет что все верно а на самом деле это не так, как вторая строка не правильно расположена.
Тут нужен другой подход
xakkkkker вне форума Ответить с цитированием
Старый 14.04.2010, 22:11   #4
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию можно как-то так

используем первый совет- находим совпадающую строку(при этом запоминаем номер столбца первого элемента в этой строке)
далее переводим , так сказать, око на следующую строку( если таковая имеется) то есть обращаемся к элементу m[a,i+1] . размерность искомой матрицы мы знаем,поэтому сможем укзать признак очередного перевода нашего ока))) включив параллельные счетчики например i и j(параллельные тем двум, с помощью которых обращаемся к матрице) мы сможем сравнивать очередную пробную матрицу с искомой поэлементно и выходить из цикла сравнения как только очередная пара элементов не совпадёт )) но самое неприятное - это выход за границы матрицы. вот с ним уже конкретные условия необходимы. ((

ЗЫ думаю, что тот , кто этот вопрос задал давно уже сам решил задачу))
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 14.04.2010 в 22:31.
vedro-compota вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск повторяющихся элементов в матрице I_newbie Помощь студентам 2 15.03.2010 22:44
Поиск минимального элемента в матрице F1eCSo Помощь студентам 0 04.02.2010 17:20
Поиск в матрице Nikolai17 Помощь студентам 3 04.12.2009 00:09
поиск нуля в матрице ciaonataha Общие вопросы C/C++ 13 31.03.2009 21:29