Dijkstra规划算法原理及C++实现

本文介绍了Dijkstra算法的原理,并提供了C++实现。通过一个具体的例子,描述了如何利用邻接矩阵法解决最短路径问题。
摘要由CSDN通过智能技术生成
1. 算法原理

参考此篇足矣:
Dijkstra算法图文详解

2. C++ 实现

问题描述:
有四个节点( 0,1, 2, 3),已知 0和1之间的距离为3米, 1和2之间的距离为4米,2和3之间的距离为2米, 0和3之间的距离为5米。
求:1 --> 3的最短距离是多少?

思路:采用邻接矩阵法,通过二维vector保存相邻节点的距离,其中:自节点距离为0,不相连节点的距离初始化为一个很大的值INF

vector<vector<int>> global_map = {
               // 纵坐标为起点,横坐标向为终点
					   /*0*/ /*1*/ /*2*/ /*3*/
				  /*0*/ {
   0,   3,   INF,    5},
				  /*1*/ {
   3,   0,   4,     INF},
				  /*2*/ {
   INF, 4,   0,     2},
				  /*3*/ {
   5,   INF, 2,     0}}   
#include <iostream>
#include <vector>
#include <algorithm>
#include "stdio.h"

using namespace std;

#define INF 99

			// 	  /*A*//*B*//*C*//*D*//*E*//*F*//*G*/
//int global_map[][6]	=	// {
   
  //     /*A*/ {   0,  12, INF, INF, INF,  16,  14},
  //     /*B*/ {  12,   0,  10, INF, INF,   7, INF},
  //     /*C*/ { INF,  10,   0,   3,   5,   6, INF},
  //     /*D*/ { INF, INF,   3,   0,   4, INF, INF},
  //     /*E*/ { INF, INF,   5,   4,   0,   2,   8},
  //     /*F*/ {  16,   7,   6, INF,   2,   0,   9},
  //     /*G*/ {  14, INF, INF, INF,   8,   9,   0}};

	/*int N = sizeof(global_map) / sizeof(global_map[0]);
	int M = sizeof(global_map[0]) / sizeof(global_map[0][0]);

	vector<vector<int>> vec_map(N, vector<int>(M));
	for(int i = 0; i < N; i++)
	{
		for(int j = 0; j < M; j++)
		{
			vec_map[i][j
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值