题目来源:厦门大学研究生课 计算智能举例
主函数部分
import java.util.ArrayDeque;
import java.util.HashSet;
import java.util.Queue;
import java.util.Set;
public class Main {
private Queue<Node> workingList = new ArrayDeque<>();//用队列实现广度优先遍历
private Set<Node> visitedNode = new HashSet<>();//该容器中只能存储不重复的对象
private final Node head = new Node(10, 0, 0);//定义初始状态
private final Node target = new Node(5, 5, 0);//定义最终状态
private void printRoute(Node node) { //用递归实现对所要路径的输出
if (node.getParent() != null) { //如果此节点的父节点为空,那么就可以输出该点,否则就对他的父节点执行输出操作
printRoute(node.getParent());
System.out.println(node);
} else {
System.out.println(node);
}
}
public void solve() {
workingList.add(head); //最先开始在队列中加入头结点
while (true) {
if (workingList.isEmpty()) {
System.out.println("FAIL");
return; //队列空则退出
}
Node node = workingList.poll(); //得到工作队列的第一个元素
if (node == null) {
System.out.println("FAIL");
return