C# 实现Dijkstra算法
来源:互联网 发布:郑州网络诈骗被一窝端 编辑:程序博客网 时间:2024/05/23 19:12
public void Dijkstra() { int [,] A = new int[6,6] { {0,20,30,28,2048,2048 }, {2048,0,20,2048,30,2048}, {2048,2048,0,10,25,2048}, {2048,2048,2048,0,2048,32}, {2048,2048,2048,2048,0,15}, {2048,2048,2048,2048,2048,0} }; int i = 0; int []TT = new int[6]; int min = 0; string[] path = new string[6] {"","","","","",""}; string thisPath = ""; string allPath = "1"; int z = 0; Console.Write("\n"); Console.Write(" Dijkstra算法" + "\n \n"); Console.Write("===========分析过程===========" + "\n \n"); Console.Write("第1步:"+"\n"); Console.Write("初始TT数组为:"); for (int c = 0;c<6;c++) Console.Write(TT[c]+" "); Console.Write("\n"); Console.Write("初始最小值为:" + min + "\n"); Console.Write("初始查找路径为:" + "1" + "\n \n"); while (z < 5) { if (i == 0) { //查找第一列,初始化数组TT for (int j = 0; j < 6; j++) { if (A[i, j] != 0 && A[i, j] != 2048) { TT[j] =A[i, j]; path[j] = (i + 1).ToString(); } } } else { for (int j = 0; j < 6; j++) { if (A[i, j] != 0 && A[i, j] != 2048) { bool isAdd = false; int w = i-1; while(w >=0) { if (A[w, j] != 0 && A[w, j] != 2048) { int tmp = A[i, j] + min; if (tmp < TT[j]) { TT[j] = tmp; path[j] =(i + 1).ToString(); } isAdd = true; break; } w--; } if (isAdd == false) { TT[j] = A[i, j] + min; path[j] = (i + 1).ToString(); } } } } //查找TT数组中的最小值 int temp = 0; Console.Write("第{0}步:" + "\n",z+2); Console.Write("当前TT数组为:"); for (int t = 0; t < 6; t++) { Console.Write(TT[t] + " "); if (TT[t] != 0 && temp == 0) temp = TT[t]; else if (TT[t] != 0 && TT[t] < temp) { temp = TT[t]; } min = temp; } for (int t = 0; t < 6; t++) { if (TT[t] == min) { thisPath = path[t]; TT[t] = 0; i = t; } } Console.Write("\n"); Console.Write("当前TT数组中的非零最小值为:" + min + "\n"); Console.Write("当前查找路径为:" + thisPath + "\n \n"); allPath += "," + thisPath; z++; } Console.Write("===========分析结果===========" + "\n \n"); Console.Write("最小路径值为:" + min+"\n"); Console.Write("最终路径为:" + allPath + "\n"); }
结果如下图:
阅读全文
0 0
- Dijkstra算法C#实现
- C# 实现Dijkstra算法
- Dijkstra 最短路径算法C#实现
- Dijkstra算法——C#实现版
- Dijkstra算法的实现
- dijkstra算法实现
- Dijkstra算法(c++实现)
- Dijkstra算法(c++实现)
- Dijkstra算法实现
- Dijkstra算法实现
- Dijkstra算法 ---java实现
- dijkstra算法JAVA实现
- Dijkstra算法实现
- Java实现Dijkstra算法
- DIJKSTRA算法-java实现
- Dijkstra算法Java实现
- Dijkstra算法的实现
- Dijkstra算法java实现
- 排序算法总结
- java基础知识(三)jvm 内存空间+对象+GC
- PyTorch笔记9-Batch Normalization
- CSS选择器
- putty访问mysql
- C# 实现Dijkstra算法
- android 架包依赖过多问题:com.android.dex.DexIndexOverflowException
- elastic Job 引入jar 包冲突解决办法
- Acer 4750G-2432G50Mnkk(540M/1GB独显)
- 在CentOS下使用fdisk添加新硬盘
- 为什么前端优化时要避免空的src
- lsd-slam源码解读第一篇:Sophus/sophus
- 浏览器渲染优化
- 公布上月月末福利中奖名单