2015-09-14 2 views
1

Проблемы «Окруженный Регион» гласит:.Окруженный алгоритм области

«Учитывая 2D доску, содержащая„X“и„O“, охватить все регионы, окруженные„X“ Области захватывается листать все" О в «Х в этом окруженном регионе».

Я смущен, что касается этой проблемы. Я не понимаю, что диктует, когда в регионе «окружен», основанный на всех примерах, найденных в Интернете (которые, случается, со всеми похожими примерами).

Приведенный пример.

input        output 

X X X X       X X X X 
X O O X       X X X X 
X X O X       X X X X 
X O X X       X O X X 

Обе группы выглядят O в окружении крестиков мне. Является ли правило, что все четыре стороны должны быть окружены X? и так как внизу O не имеет X ниже, это не 'capt'?

Что произойдет, если это вход? ничего снято?

X X X X        
X O O O       
X X O X       
X O X X        

ответ

1

Согласно определению, если «O» клетка окружена клетками «X», т.е. вверх/вниз/влево/вправо клетки «X». Первая мысль может быть для каждой ячейки «O», добавить ее в массив, проверить ее вверх/вниз/влево/вправо, и если это еще одна ячейка «O», продолжайте, пока она не ударит по всем ячейкам «X» или граница хитов. В первом случае ячейки в массиве могут быть перевернуты до'X '; в то время как в последнем случае ячейки в массиве не могут быть перевернуты.

+0

Обратите внимание, что любые ячейки «O», которые (прямо или косвенно) связаны с ячейкой «O», не могут быть перевернуты. – Touareg

1

Да, точно.
Это окружение и захват на самом деле, как игра (GO). Края не могут быть захвачены, вот и все. Если вы поместите свои точки в край, они будут вашими до конца игры. Также, окружающие средства, if O's are surrounded by X's, then X's will form a cycle around O's. And whenever such a cycle completes, all the inside O's will be flipped to X's and vice-versa.
определение цикла:
Цикл иксы или Выходов любая связная область, где вы начинаете из клетки и вернуться к нему, не повторяя (пересматривают) клетки, и каждый шаг, который вы можете взять chess piece king's движение для завершения пути.
Итак, в вашем примере ввода путь:
(1,0) -> (0,1) -> (0,2) -> (1,3) -> (2,3) -> (3,2) -> (2,1) -> (1,0) образует цикл.

+0

В игре Go, камень в краю можно захватить, заполнив соседние точки. другими словами, внешняя сторона доски всегда рассматривается как камень противников, поэтому в этом случае 'O' может быть захвачен' X', если это игра. – ymonad

+0

Это * как * игра GO. В GO мы фактически захватываем 'lines' (1-D). Расширьте его до 2-D, и вы получите эту игру. Именно по этой причине в GO вы не можете захватить углы и в этой игре вы не можете захватить края. – vish4071

+0

Я не думаю, что дать игру в качестве примера уместно здесь, поскольку игра в go имеет три состояния: 'empty',' black', 'white'. Проблема состоит только в двух состояниях 'O' и' X'. – ymonad

Смежные вопросы