单源最短路径Dijkstra算法 C#
来源:互联网 发布:哈谢克 知乎 编辑:程序博客网 时间:2024/06/03 17:24
原文为C++,用C#改写了一下。
http://www.dutor.net/index.php/2010/04/shortest-path-dijkstra/
ClassNode类
public class ClassNode{public const int MAXINT = 0xFFFF;public ClassNode(){nodeLen = MAXINT;nodeAdd = false;}public int nodePre;public int nodeLen;public bool nodeAdd;}
主程序
namespace DijkstraConsole{class Program{public const int MAXINT = 0xFFFF;public static void Main(string[] args){int n = 0;int node;int nline;int nfrom;int nto;int nlen;int nmin;int nstart;int nnext;Console.Write("请输入顶点数: ");node = int.Parse(Console.ReadLine());n = node;ClassNode[] classNode = new ClassNode[n];int[,] Adj = new int[n,n];for (int i = 0; i < n; i ++){for (int j = 0; j < n; j ++){Adj[i,j] = MAXINT;}classNode[i] = new ClassNode();Adj[i,i] = 0;}Console.Write("请输入边数: ");nline = int.Parse(Console.ReadLine());Console.WriteLine();Console.WriteLine("=============基础数据输入=============");for (int i = 0; i < nline; i ++){Console.Write("请输入起点: ");nfrom = int.Parse(Console.ReadLine());Console.Write("请输入终点: ");nto = int.Parse(Console.ReadLine());Console.Write("请输入距离: ");nlen = int.Parse(Console.ReadLine());Adj[ nfrom, nto ] = nlen;Console.WriteLine("起点:" + nfrom + " " + "终点:" + nto + " " + "距离:" + nlen);}Console.WriteLine("======================================");Console.Write("请输入源点: ");nstart = int.Parse(Console.ReadLine());classNode[nstart].nlen = 0;nnext = nstart;for (int i = 0; i < n; i ++){nmin = MAXINT;int nodet = 0;classNode[nnext].nodeAdd = true;for (int j = 0; j < n; j ++){if (classNode[j].nlen > classNode[nnext].nlen + Adj[nnext,j]){classNode[j].nlen = classNode[nnext].nlen + Adj[nnext,j];classNode[j].nodePre = nnext;}if (classNode[j].nlen < nmin && !classNode[j].nodeAdd){nmin = classNode[j].nlen;nodet = j;}}if (nmin == MAXINT) break;nnext = nodet;}for(int i = 0; i < n; i ++){Console.WriteLine(classNode[i].nlen + " " + classNode[i].nodeAdd);}do{Console.Write("请输入目的地: ");nto = int.Parse(Console.ReadLine());int rp = nto;while(rp != nstart) // 反向输出路径{Console.Write(rp + " <- ");rp = classNode[rp].nodePre;}Console.WriteLine(nstart);Console.WriteLine("Distance: " + classNode[nto].nlen);}while(nto < n);}}}
- 单源最短路径Dijkstra算法 C#
- Dijkstra算法(单源最短路径)C#版
- 单源最短路径 dijkstra算法
- 单源最短路径Dijkstra算法
- Dijkstra 单源最短路径算法
- 单源最短路径 :Dijkstra 算法
- 单源最短路径(Dijkstra算法)
- 单源最短路径----------Dijkstra算法
- 单源最短路径Dijkstra算法
- 单源最短路径(Dijkstra算法)
- 单源最短路径 : Dijkstra 算法
- Dijkstra单源最短路径算法
- 算法 单源最短路径Dijkstra
- 单源最短路径-Dijkstra算法
- 单源最短路径----Dijkstra算法
- 单源最短路径-Dijkstra算法
- 单源最短路径算法-Dijkstra
- 单源最短路径 :Dijkstra算法
- drools规则语法(一)
- Java集合类说明及区别
- 不相关成员函数的调用
- Windows日志定位系统性能问题
- 安新家!
- 单源最短路径Dijkstra算法 C#
- 写代码的随想(3)
- poj 2449( k 短路 spfa+A*来求解)
- Java中对集合的并,交,联集,差操作
- ubuntu下apache+mysql+php安装笔记
- JAVA所有修饰符有哪些?用在类,变量,方法前有什么区别?
- HDU-2544 朴素的dijkstra
- [转]U_boot 的 bootcmd 和bootargs参数详解
- Java程序练习-队列操作