js实现最短路经问题
来源:互联网 发布:杰克棋牌透视软件 编辑:程序博客网 时间:2024/05/01 02:04
var zhandian=new Array("北京","锦州","沈阳","长春");
var licheng=new Array("北京","锦州",16,"锦州","北京",29,"北京","沈阳",15,"沈阳","北京",21,"长春","沈阳",19,"沈阳","长春",7,"长春","锦州",27,"锦州","长春",13);
///////////////////////------------------------------------------->.>>>>>>>>
var x=licheng.length/3;
var y=3;
var lc_fd = new Array(x);
for(var i=0;i<x;i++){
lc_fd[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++){
k=i*3;
for (j=0;j<y;j++){
lc_fd[i][j]=licheng[k];
k++;
document.write(lc_fd[i][j]);
}
document.write("<br>");
}
//-------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>生成二维数据组,即为“边”,每个数组长度为3,存着起点终点里程
//------------------------------------------构建邻接矩阵
var x=zhandian.length;
var y=zhandian.length;
var lj = new Array(x);
for(var i=0;i<x;i++){
lj[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++)
{
for (j=0;j<y;j++)
{
var a=zhandian[i];
var b=zhandian[j];
if(a==b)
{
lj[i][j]=0;
//break;
}
else
{
for(k=0;k<licheng.length/3;k++)
{
if(a==lc_fd[k][0]&b==lc_fd[k][1])
{
lj[i][j]=lc_fd[k][2];
//document.write(lc_fd[k][2]);
//document.write("找到了");
break;
}
else
{
if(k==licheng.length/3-1)
{
// document.write("没找到");
lj[i][j]=9999;
}
}
}
}
// document.write(lj[i][j]);
}
// document.write("<br>");
}
//------------------------------------------------------构建邻接矩阵完成!
//-----------------------------------------------------打印邻接矩阵
for(i=0;i<4;i++){
for (j=0;j<4;j++){
document.write(lj[i][j]);
document.write(",");
}
document.write("<br>");
}
//-----------------------------------------------------打印邻接矩阵
//开始核心代码
//开始核心代码
//-------------------------定义经过的路径函数开始
var x=zhandian.length;
var y=zhandian.length;
var path = new Array(x);
for(var i=0;i<x;i++){
path[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++){
for (j=0;j<y;j++){
path[i][j]=-1;
//document.write(path[i][j]);
}
//document.write("<br>");
}
//-------------------------定义经过的路径函数完毕
//假设起点为1,终点为4
var n=4;
var zz=0;
for(k=0;k<n;k++)
{
for(j=0;j<n;j++)
{
for(i=1;i<n;i++)
{
if(lj[i][k]!=0 & lj[k][j]!=0 &lj[i][j]!=0>(lj[i][k]+lj[k][j]))
{
lj[i][j]=lj[i][k]+lj[k][j];
path[i][j]=k;
}
else{}
}
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
document.write(path[i][j]);
}
document.write("<br>");
}
document.write("_________________");
//下面想写个函数输出路径,怎么也试不好
function abc(i,j)
{
var k;
k=path[i][j];
if(k==-1)(return;);
abc(i,k);
document.write("---->>");
document.write(k);
abc(k,j);
}
abc(2,3);
var licheng=new Array("北京","锦州",16,"锦州","北京",29,"北京","沈阳",15,"沈阳","北京",21,"长春","沈阳",19,"沈阳","长春",7,"长春","锦州",27,"锦州","长春",13);
///////////////////////------------------------------------------->.>>>>>>>>
var x=licheng.length/3;
var y=3;
var lc_fd = new Array(x);
for(var i=0;i<x;i++){
lc_fd[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++){
k=i*3;
for (j=0;j<y;j++){
lc_fd[i][j]=licheng[k];
k++;
document.write(lc_fd[i][j]);
}
document.write("<br>");
}
//-------------------------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>生成二维数据组,即为“边”,每个数组长度为3,存着起点终点里程
//------------------------------------------构建邻接矩阵
var x=zhandian.length;
var y=zhandian.length;
var lj = new Array(x);
for(var i=0;i<x;i++){
lj[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++)
{
for (j=0;j<y;j++)
{
var a=zhandian[i];
var b=zhandian[j];
if(a==b)
{
lj[i][j]=0;
//break;
}
else
{
for(k=0;k<licheng.length/3;k++)
{
if(a==lc_fd[k][0]&b==lc_fd[k][1])
{
lj[i][j]=lc_fd[k][2];
//document.write(lc_fd[k][2]);
//document.write("找到了");
break;
}
else
{
if(k==licheng.length/3-1)
{
// document.write("没找到");
lj[i][j]=9999;
}
}
}
}
// document.write(lj[i][j]);
}
// document.write("<br>");
}
//------------------------------------------------------构建邻接矩阵完成!
//-----------------------------------------------------打印邻接矩阵
for(i=0;i<4;i++){
for (j=0;j<4;j++){
document.write(lj[i][j]);
document.write(",");
}
document.write("<br>");
}
//-----------------------------------------------------打印邻接矩阵
//开始核心代码
//开始核心代码
//-------------------------定义经过的路径函数开始
var x=zhandian.length;
var y=zhandian.length;
var path = new Array(x);
for(var i=0;i<x;i++){
path[i] = new Array(y);
}
////////////////以上批量定义
for(i=0;i<x;i++){
for (j=0;j<y;j++){
path[i][j]=-1;
//document.write(path[i][j]);
}
//document.write("<br>");
}
//-------------------------定义经过的路径函数完毕
//假设起点为1,终点为4
var n=4;
var zz=0;
for(k=0;k<n;k++)
{
for(j=0;j<n;j++)
{
for(i=1;i<n;i++)
{
if(lj[i][k]!=0 & lj[k][j]!=0 &lj[i][j]!=0>(lj[i][k]+lj[k][j]))
{
lj[i][j]=lj[i][k]+lj[k][j];
path[i][j]=k;
}
else{}
}
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
document.write(path[i][j]);
}
document.write("<br>");
}
document.write("_________________");
//下面想写个函数输出路径,怎么也试不好
function abc(i,j)
{
var k;
k=path[i][j];
if(k==-1)(return;);
abc(i,k);
document.write("---->>");
document.write(k);
abc(k,j);
}
abc(2,3);
- js实现最短路经问题
- 最短路经问题
- 图论 最短路经
- ICTCLAS之N-最短路经
- 【图论】SPFA算法求第二最短路经
- 最短路径问题 java实现 源代码
- HUD3790最短路径问题(SPFA实现)
- 街区最短路径问题Java实现
- python 实现 Dijkstra最短路径问题
- JAVA实现地图最短路径问题
- 最短路径问题-Graph Java实现
- 最短路经算法简介(Dijkstra算法,A*算法,D*算法)(转载)
- 最短路经算法简介(Dijkstra算法,A*算法,D*算法)
- 最短路经算法简介(Dijkstra算法,A*算法,D*算法)(转载)
- 1576: [Usaco2009 Jan]安全路经Travel 最短路径树+树链剖分+线段树
- 【最短路径树+可并堆/树链剖分】BZOJ1576 [Usaco2009 Jan]安全路经Travel
- 最短路经算法简介(Dijkstra算法,A*算法,D*算法)
- 最短路径问题
- DBUnit的原理
- 完成端口Accept方式
- DBUnit的使用之數據庫數據導出
- MFC/VC++ 绘制正弦曲线
- 搭建报表平台(SharePoint&ReportingServices集成模式)
- js实现最短路经问题
- Android的引用jar包
- PYTHON字典常用函数
- 手势识别
- 没语法错误,可xml文件还总是 报Error in an XML file: aborting build.这错误
- 第12题 判断两个链表是否相交
- vs2005打开exe文件查看资源
- c++【友元】的一些用法
- GestureOverlayView属性