Java算法,程序设计

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:15:03
求一种算法:
如图:空白格表示可以通过的,数字1~9表示障碍物,是不可以通过的,根据当前条件,计算出从红点到黑点的线路(最好能计算出最短的一条线路,甚至可以计算出任意一条能到达黑点的路线),当然只要能算出线路也行.我的目的就是想让红点往黑点移动,所以要计算出它的移动路线.请各位高手指教..谢谢.744396002.

A*寻路算法, 你去看看这两片文章就可以写出来了。

A* 寻路算法
http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html
在A*寻路中使用二叉堆
http://blog.vckbase.com/panic/archive/2005/03/28/4144.html

这种问题有2种算法,Dijkstra算法和A*算法
Dijkstra能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低
一般的使用中A*算法比较多见
因为java的图形界面做起来不爽以前写过一个js版本的算法,思路是一样的,可以参考
<html><head><title>use A* to find path...</title></head>
<body style="margin:0px">
<script>
var closelist=new Array(),openlist=new Array();
var gw=10,gh=10,gwh=14;
var p_start=new Array(2),p_end=new Array(2);
var s_path,n_path="";
var num,bg,flag=0;
var w=30,h=20;
function GetRound(pos){
var a=new Array();