Về cơ bản đó là một tìm kiếm/tìm đường.
Giả sử rằng isConnected (a, b) sẽ trả về nếu hai nút được kết nối
(Tôi viết mã trong Lua, nó không phải là khó để dịch)
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
là một hàm nhận danh sách và kiểm tra chúng. Nó tìm thấy danh sách được gửi dài nhất không chứa bản sao. Danh sách đó sẽ là giải pháp cho vấn đề của bạn.
Ồ, một điều khác; mã của tôi không chiếm một cái gì đó. Trong trường hợp danh sách chứa các nút trùng lặp, chức năng đó sẽ chấm dứt để nó không tái sử dụng vĩnh viễn.