广度优先搜索算法
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>8方向双向广搜</title></head><body><script type="text/javascript">var tb = [], o, r, c, n=0, newHash;var dir=[ [-1,0], , , , [-1,-1], , , [-1,1] ];function sou(hash){newHash = {};for(var i in hash){for(var j=0; j<8; j++){r = hash.row + dir;c = hash.col + dir;if(r<0||c<0||r==rows||c==cols||tb.tp==1||tb.tp==hash.tp) continue;o = tb;if(o.tp!=0) {alert(new Date()-time);return show(o)(hash);}o.parent = hash;o.tp = o.parent.tp;//o.obj.style.backgroundColor = "#CC66FF";newHash = o;}}//alert("第"+(++n)+"步");sou(newHash);}function show(o){if(!o.parent) return show;o.obj.style.backgroundColor = "yellow";return show(o.parent);}var mapArr = [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,];var rows = mapArr.length+2;var cols = mapArr.length+2;var hash={};for(r=0; r<rows; r++){tb = [];for(c=0; c<cols; c++){o = {row:r, col:c};o.tp = r>0&&c>0&&r<rows-1&&c<cols-1 ? mapArr : 1;var bg = "blue";switch(o.tp){case 1: bg = "red"; break;case 2: bg = "green"; hash=o; break;case 3: bg = "black"; hash=o; break;}o.obj = document.createElement("img");o.obj.style.cssText = "position:absolute; left:"+c*10+"px; top:"+r*10+"px; background-color:"+bg+"; width:10px; height:10px;";this.tb = o;document.body.appendChild(o.obj);}}document.write('<input style="position:absolute;top:'+(rows*10+20)+'px" type="button" value="查找路径"/>')</script></body></html>http://bbs.51js.com/viewthread.php?tid=86484&extra=page%3D3
页:
[1]