|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.12.2012, 05:21 | #1 |
Пользователь
Регистрация: 19.01.2010
Сообщений: 19
|
Преобразование матрицы
Привет всем!
Есть матрица заданного размера. Во всех ячейках нули и единицы, сгенерированные случайно и неравномерно. Вероятность встретить единицу в ячейке - 10%. Смежные ячейки с единицами образуют комплексы из ячеек-единиц. Смежными ячейками считаются все ячейки вокруг данной ячейки, то есть: и с четырёх сторон относительно данной, и с четырёх углов (по диагонали). Нужно преобразовать матрицу так, чтобы каждый комплекс из смежных ячеек-единиц содержал не больше пяти ячеек-единиц, и был окружён как минимум одной ячейкой-нулём так же со всех сторон. Один из возможных вариантов комплекса из ячеек-единиц с максимальным числом этих ячеек (5) может выглядеть так: 000000 001000 000100 001100 010000 000000 Заранее спасибо за ваши идеи! P.S. Начальное количество нулей и единиц в матрице сохранять не обязательно. |
15.12.2012, 17:33 | #2 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 95
|
Пишу на чистом С, плюсы спилил.
|
15.12.2012, 20:09 | #3 | |
Пользователь
Регистрация: 19.01.2010
Сообщений: 19
|
Цитата:
|
|
15.12.2012, 23:03 | #4 |
Играюсь с Python
Форумчанин
Регистрация: 12.12.2012
Сообщений: 340
|
LynXzp
+2001000 |
15.12.2012, 23:21 | #5 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Ну первым пунктом - берем комплекс и по краям загоняем в него нули, поскольку это обязательное условие, то есть:
Код:
2) Создаем некий счетчик для выноса лишних единиц из комплекса так сказать "за скобку" 3) Считаем, сколько в комплексе ячеек-единиц, и если больше - увеличиваем счетчик и убираем лишние единицы. Если меньше и счетчик>0, то добавляем единицы любо до пяти штук, либо сколько можем (зависит от содержимого счетчика). Сам счетчик, соответственно, декрементируем 4) Повторяем по всем комплексам матрицы пункты 1-3 В итоге всего этого непотребства в матрице появятся комплексы с пятью единицами либо меньше пяти единиц (но не больше). Меньше может появиться тогда, когда счетчик=0, а единиц в комплексе<5 => переходим к следующему комплексу, оставляя текущий в таком виде, в каком он сейчас 5) Если счетчик >0 Повторяем проход по всем комплексам, проверяем - если единиц <5 - дополняем до 5, уменьшая счетчик. За идею сойдет?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
16.12.2012, 02:40 | #6 | |
Пользователь
Регистрация: 19.01.2010
Сообщений: 19
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Преобразование матрицы | P91 | Помощь студентам | 2 | 21.10.2012 18:13 |
Матрицы. Преобразование (C#) | RIOs | Помощь студентам | 1 | 08.06.2012 22:13 |
преобразование матрицы. | Dmitriy_ | Помощь студентам | 0 | 25.05.2011 22:24 |
Преобразование матрицы C++ | MissFehn | Помощь студентам | 1 | 20.05.2011 07:45 |
Преобразование матрицы. | AndyShafl | Общие вопросы Delphi | 1 | 22.12.2009 13:59 |