我一直被困在这个问题上好几天。显然我需要编写一个更好的算法来赢得下面的算法。下面的代码是从着名的艾玛文件实现的。这里有没有专家可以指导我如何赢得算法?实施更快的算法
(defun find-closest (list)
(x (car (array-dimensions list)))
(y (cadr (array-dimensions list)))
(let ((elems (aref list x y)))
(dolist (e elems)
(when (eq (type-of e) type)
(return-from find-closest (list x y)))) nil))
我试着实现一个DFS,但失败了,我不知道为什么。以下是我的代码。
(defun find-closest (list)
(let ((open (list list))
(closed (list))
(steps 0)
(expanded 0)
(stored 0))
(loop while open do
(let ((x (pop open)))
(when (finished? x)
(return (format nil "Found ~a in ~a steps.
Expanded ~a nodes, stored a maximum of ~a nodes." x steps expanded stored)))
(incf steps)
(pushnew x closed :test #'equal)
(let ((successors (successors x)))
(incf expanded (length successors))
(setq successors
(delete-if (lambda (a)
(or (find a open :test #'equal)
(find a closed :test #'equal)))
successors))
(setq open (append open successors))
(setq stored (max stored (length open))))))))
这不是一个更好的职位[Code Review SE](http://codereview.stackexchange.com/)? – Sylwester
什么是Code Review SE。对不起,我还是比较新的 – Hero1134
@Sylwester在代码审查中这将成为题外话题,因为代码似乎不能正常工作,因为作者正在寻找一些fhelp来使代码工作。参见[Stack Overflow用户代码评论指南](http://meta.codereview.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-users) – Phrancis