Предложите алгоритм и структуру данных для решения игры Globs (http://www.deadwhale.com/play.php?game=131). Это довольно забавно в уродливом виде.
Укажите сложность временного пространства (большой-O) вашего подхода в терминах N, размер сетки (N >= 14). Предпочтительные эффективные алгоритмы с низкой сложностью.
(MatrixFrog правильно указывает, что эта игра также известна как FloodIt, и Smashery дал решение 3 месяца назад в ссылке, которую он цитирует ниже. Все, что вы говорите, предлагая обрезку/жадность только с одним взглядом, что дает субоптимальные решения.)
Игра генерирует случайную квадратную сетку узлов nxn, где каждый node окрашен в один из шести цветов (Grn = 1, Ylw = 2, Red = 3, Blu = 4, Pur = 5, Orn = 6), Уровень 1 имеет сетку 9x9, затем n увеличивает каждый уровень, до 14. На каждом уровне вы можете взять до 25 оборотов, иначе проиграете. На каждом шагу вы выбираете, какой цвет изменить в верхнем левом node, например. Grn- > Red, так что любые связанные соседние (горизонтальные/вертикальные) узлы нового цвета усваиваются в форме, а 1 pt за node - ADDED добавляется к вашему счету. Цель подсчета состоит в том, чтобы завершить каждую сетку за несколько ходов, например, если вы сделаете это за 16 оборотов, то ваши 9 неиспользованных ходов = > 2 * 9 MULTIPLIER умножат ваш общий накопленный балл.
Очевидно, есть много способов разложить это, и выбор по умолчанию рекурсивного обратного трассировки с сеткой 14x14 является жизнеспособным соперником; К каким другим типам данных это относится? A *? Не зацикливайтесь на оптимальности, мне интересно, есть ли алгоритм "достаточно хорошего".
(Я думал, что это забавный проект, чтобы закодировать робота и получить глупые результаты. Хотя я набрал 3.5E + 12 всего своим самосознанием fleshware.)