Dijkstra算法的简单实现(C++)
来源:互联网 发布:python(x,y) 编辑:程序博客网 时间:2024/05/16 12:45
最近在看《算法导论》,将Dijkstra算法实现了一下。网上的实现都太复杂,自己写了一个简单的版本。
1,2,3,4,5一共5个顶点。v[5]表示存储的尚未输出的顶点矩阵。s[5]表示存储的已输出的顶点矩阵。a[5][5]用有向邻接图存储顶点间的距离信息。
// Dijkstra-algorithm.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;int main(){int distance[5];//原点到其他点的距离矩阵,每一轮中不断更新int s[5];//已输出的顶点矩阵int v[5] = {1,2,3,4,5};//未输出的顶点矩阵int max = 9999;int pos=0;//每一轮中要选择输出顶点的序号bool flag[5];//顶点有无输出的矩阵int a[5][5] = {0,5,3,max,max, max,0,max,6,max, max,max,0,4,7, max,max,max,0,1, max,max,max,max,0};//定义一个有向邻接图矩阵for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {cout<< a[i][j]<<" ";if (j==4) {cout << endl;//输出该矩阵}}}for (int i = 0; i < 5;i++) {distance[i] = a[0][i];//赋值给distance数组flag[i] = false;}for (int i = 0; i < 5; i++) {int min;for (int s = 0; s < 5; s++) {if (flag[s] != true)min = distance[s];//未纳入时设为最小值}for (int j = 0; j < 5; j++) {if (distance[j] <= min&&flag[j] != true) {min = distance[j];pos = j;}}//遍历查找最小距离s[pos] = v[pos];v[pos] = NULL;flag[pos] = true;cout << "距离矩阵:";for (int k = 0; k < 5; k++) {if (distance[k] >distance[pos] + a[pos][k]) {distance[k] = distance[pos] + a[pos][k];//距离更新}cout << distance[k] << " ";}cout << "将" << pos+1 << "输出." << endl;}return 0;}
阅读全文
0 0
- Dijkstra算法的简单实现(C++)
- C++Dijkstra算法实现
- 数据结构(C#)--Dijkstra 算法的最小路径的实现
- Dijkstra 算法的 C/C++ 实现
- Dijkstra算法 c语言实现
- Dijkstra算法 c/c++实现
- dijkstra算法C语言实现
- c/c++ Dijkstra算法实现
- Dijkstra算法的实现
- Dijkstra算法的实现
- dijkstra算法的实现。
- Dijkstra算法的实现
- 一个dijkstra的简单算法
- 配合Dijkstra算法的Hash表实现文件C语言
- 配合Dijkstra算法的二叉堆实现文件C语言
- Dijkstra 算法+Heap堆的完整c实现源码
- 最短路径之dijkstra算法的C语言实现
- 最短路径Dijkstra算法的C语言实现
- git使用教程
- 深度学习中对于参数优化时的各种优化器(SGD时基础的优化器)
- web前端开发规范
- 培训第六天
- spring mvc防重复提交(第二种 自定义注解 以及 注解的实现 和 运用注解)
- Dijkstra算法的简单实现(C++)
- hdoj 1027 Ignatius and the Princess II
- linux平台设备驱动模型
- 面向未来的人才教育
- HUD 1300 Pearls (水 dp)
- PCA,Kmeans,NMF和谱聚类之间的联系
- 训练总结 12.10
- 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v5.8.0版)
- 309. Best Time to Buy and Sell Stock with Cooldown