Структура данных вызов Дерево DFS - PullRequest
0 голосов
/ 04 августа 2020

Я столкнулся с интересной проблемой программирования и мог использовать помощь, чтобы найти лучший способ ее решить. Вот вам вызов:

Это блестящий день, пока наш умный принц-лягушка отправился на поиски золотых яиц из замков, чтобы снять проклятие и снова стать настоящим принцем. Он может начать с (любого) одного из самых верхних этажей башни замка, где он видит больше башен поблизости, и фея отправляет ему сообщение (ввод) о местонахождении золотых яиц. У него есть способность перепрыгивать через башни любое количество раз, пока он не достигнет нижнего этажа (первого этажа), однако он не может снова взобраться на него ни при каких обстоятельствах. * на этаж ниже, но если он перепрыгнет с одной башни на любую другую, то опустится на два этажа. Скажем, если наш принц-лягушка находится на 5-м этаже 1-й башни и если он хочет прыгнуть в 4-ю башню, он потеряет высоту (два этажа) и приземлится на 3-м этаже 4-й башни. Для башни замка может быть любое количество этажей, все башни замка будут иметь одинаковое количество этажей.

Формат ввода

Ввод начинается со значения N: числа башен замка.

За ними следуют N строк,

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

Пример ввода:

3    
5 1 1 1 4 10    
8 9 5 7 7 3 9 8 8    
5 9 5 6 4 3

Пример вывода:

12

Пояснение:

введите описание изображения здесь

Мне нужна помощь с частью кода DFS (или любого другого алгоритма).

1 Ответ

0 голосов
/ 04 августа 2020

Попробуйте программирование на Dynami c.

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