как решить проблему со средним блоком (рассмотреть краевые блоки и оставить любой блок в середине строки) - PullRequest
1 голос
/ 25 июля 2011

Мне нужно решить эту проблему алгоритма.На диаграмме много строк с разными номерами.блоков.Каждый блок хороший или плохой.Блок с нет.1 на это хороший блок, а остальные все плохо.Мне нужно сделать группировку этих блоков в 2, чтобы определить, хорош ли результат этих группировок или нет.Если я сделаю группу из 2, я проверю, все ли блоки имеют «1».Если да, то результирующий блок хороший, в противном случае плохой.

Проблема: при группировании блоков мне всегда приходится учитывать блоки, которые находятся по краям.Если в строке нечетное количество блоков (скажем, 9), и я делаю группу из 2, то средний блок (5-й блок) должен игнорироваться, блоки по краям должны иметь преимущество по отношению к среднему блоку.Я не знаю, как решить проблему, так как я запутался с частью игнорирования среднего блока в случае нечетного нет.Он может игнорировать любой блок (рядом со средним блоком), но должен учитывать блоки по краям.

Так что в основном, сначала мне нужно выяснить, есть ли в строке нечетные / четные номера блоков согласнона размер группы, который равен 2. Тогда, если нечетное нет.блоков здесь, оставьте средний и создайте группу с блоками по краям и найдите результат, если результат будет хорошим или плохим.

Во входах у меня есть координаты X и Y каждого блока и его информация, как блок хороший или плохой.

enter image description here

1 Ответ

0 голосов
/ 25 июля 2011

Похоже, выбрасывание точного среднего блока не является хорошим решением.С рядом размера 7 вы сможете составить 3 пары, но если отбросить центральную, вы получите только две пары.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...