По сути, это поиск/поиск.
Предположим, что isConnected(a,b) возвращает значение, если два узла соединены
(Я пишу код на Lua, это не должно быть сложно перевести)
function search(list)
local i = 0
while i < 10000 do
i = i + 1
if isConnected(i,list[#list]) then
--This expression refers to the last member
search(list ++ i)
--Although not technically a proper operator, ++ adds the element to the end of the list
end
end
submit_list(list)
end
submit_list
— это функция, которая принимает списки и проверяет их. Он находит самый длинный представленный список, который не содержит дубликатов. Этот список и будет решением вашей проблемы.
О, еще одна вещь; мой код что-то не учитывает. В случае, если список содержит повторяющиеся узлы, эта функция должна завершиться, чтобы она не повторялась вечно.
person
TaslemGuy
schedule
06.08.2010