Я готовлюсь к соревнованиям по программированию и хотел бы узнать, как я могу решить эту проблему. Я предполагаю, что это проблема геометрии, и, похоже, я не могу понять, как ее решить.
Вот оно:
Есть двор, в котором есть волки и овцы. Во дворе есть также блоки, которые не позволяют пройти. Волки обозначены буквой «w», а овцы - «s», в то время как блоки обозначены «#», а пространство, в котором каждый может двигаться, - «.» , Таким образом, возможный ввод будет выглядеть так:
8 8
.######.
#..s...#
#.####.#
#.#w.#.#
#.#.s#s#
#s.##..#
#.w..w.#
.######.
2 числа над двором - строки х столбцов.
Как видите, таким образом во дворе могут образовываться сектора разного типа. Вот два сектора:
####
#.w#
####
#s.#
В первом есть волк, а во втором - овца. Поскольку они расположены в двух разных секторах (то есть волк не может добраться до овец), он не может есть это. Если бы они были в одном секторе, волк съел бы овец.
Мой вопрос к вам таков: учитывая данные, подобные приведенным выше, как мне рассчитать, сколько овец выживет? Как я могу представить «двор» в C ++? Как должен выглядеть алгоритм? Есть ли материалы для понимания подобных проблем и вопросов?
Любая помощь приветствуется. Заранее спасибо.