rudy-peto Ответов: 2

Как мне решить этот вопрос военной игры?


У меня есть карта военной игры. Его представляют как это
.##
#..
#.ля
Предположим, что " # " - это гора,". " - пустая земля, а строчный алфавит-это армия. Армии не могли перемещаться между областями, окруженными горами. А армии могут двигаться только вверх, вниз, влево и вправо.
Вышеприведенный пример показывает, что армии " а " владеют этим регионом, но когда я превращаюсь в
.##
#б.
#.ля
Армия " а "не владеет этим регионом, потому что в этом регионе есть армия "б".
Как определить, что армии " а " и " Б " находятся в одном регионе?
Я использую матрицу для отображения этой карты. Но я все еще не могу проверить, что " А " и " Б " находятся в одном регионе.
Любая помощь будет оценена по достоинству.

Спасибо!

Что я уже пробовал:

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

Graeme_Grant

Опубликуйте свой код, мы не будем писать его для вас.

rudy-peto

Все, что мне нужно, - это просто концепция.
Код - это просто итерация через 2-мерный массив.
Но проблема в чекере.

2 Ответов

Рейтинг:
2

OriginalGriff

Во-первых, определите отдельные регионы. Это пробелы, состоящие из букв". " или буквенных символов, которые касаются либо вертикально, либо горизонтально. Итак, определите регионы, затем найдите армии и выясните, в каком регионе они находятся.

Поскольку ваши регионы нерегулярны, есть два способа хранения этих регионов:
1) Создайте новую карту для каждого региона и заполните ее горами. Затем втяните пустую землю туда, где вы ее найдете. Довольно просто увидеть, находятся ли две армии в одном регионе: находятся ли они на одной карте?
2) более умная версия: когда вы идентифицируете регион, измените символ". " на число, указывающее номер региона. Находятся ли две армии в одном регионе? Да-это они находятся рядом с одним и тем же номером региона...

Но это твое домашнее задание, так что я не дам тебе никакого кода!


Рейтинг:
0

Patrice T

Это домашнее задание, так что никакого кода, просто намек.
Вам нужно думать механически.
Как вы это делаете вручную:
1) нарисуйте карту
2) Найти армию
3) раскрасьте соседние клетки, которые доступны, и распространяйте раскрашивание до тех пор, пока в регионе не останется больше доступных клеток или пока вы не столкнетесь с другой армией.
4) Встреча с другой армией дает вам ответ.
5) повторяйте в 2) до тех пор, пока у вас не будет ответа для каждого региона.

Мы не делаем вашу домашнюю работу.
Домашнее задание предназначено не для того, чтобы проверить ваши навыки просить других людей выполнять вашу работу, а для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание пройденных вами курсов, а также проблем, возникающих при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по их исправлению.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и начинайте работать. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.