当前位置: 首页 > news >正文

怎么维护网站教程陈晓佳 中信建设有限责任公司

怎么维护网站教程,陈晓佳 中信建设有限责任公司,厦门哪些做鲜花的网站,wordpress租车主题迪杰斯特拉算法通常用在图的最短路径问题上 而迷宫的最短路径可以用BFS来做,虽然BFS不能用于带权值的迷宫,但是可以对BFS稍微改进,只需要把判断是否走过的数组改为最短路径的数组,在判断是否可走时判断是否比最短的小即可 Dijks…

迪杰斯特拉算法通常用在图的最短路径问题上

而迷宫的最短路径可以用BFS来做,虽然BFS不能用于带权值的迷宫,但是可以对BFS稍微改进,只需要把判断是否走过的数组改为最短路径的数组,在判断是否可走时判断是否比最短的小即可

Dijkstra步骤如下:

1,初始化一个graph二维数组来存储图的邻接表,一个dis一维数组来存储最短路径,一个check来存储是否走过

2,从起点开始,将起点的路径设置为0,也就是disp[起点] = 0

3,进入循环,每次寻找dis中最小的节点,然后遍历邻接表,如果邻接表的距离+该点的dis < dis[循环到的点],那么就迭代循环到的点,最后将最小的那个点check设置为true

while(!end()){//寻找最小的点int min = max_num,min_num = max_num;for(int i = 1;i <= ::max;++i){if(dis[i] < min_num && !check[i]){min = i;min_num = dis[i];}}//从邻接表中寻找这个点可到达的点,并迭代可到达的点的距离for(int i = 1;i <= ::max;++i){if(graph[min][i] != max_num){if(dis[i] > dis[min] + graph[min][i]){dis[i] = dis[min] + graph[min][i];//经过最小的那个点到达这个点的距离为dis[min] + graph[min][i]}}}//将最小的那个点标记check[min] = true;}

4,循环直到所有check都为true即可

也可以直接写一个函数判断

//这里写了一个函数判断是否都被标记
bool end()
{for(int i = 1;i <= ::max;++i){if(!check[i]){return false;}}return true;
}

 c++代码如下

#include <bits/stdc++.h>#define max_num 9999
using namespace std;int graph[max_num][max_num];//邻接表,存储图
int dis[max_num];//存储最短路径
bool check[max_num];//存储是否被标记
int max;//存储最大节点//这里写了一个函数判断是否都被标记
bool end()
{for(int i = 1;i <= ::max;++i){if(!check[i]){return false;}}return true;
}void dijkstra(int e)
{while(!end()){//寻找最小的点int min = max_num,min_num = max_num;for(int i = 1;i <= ::max;++i){if(dis[i] < min_num && !check[i]){min = i;min_num = dis[i];}}//从邻接表中寻找这个点可到达的点,并迭代可到达的点的距离for(int i = 1;i <= ::max;++i){if(graph[min][i] != max_num){if(dis[i] > dis[min] + graph[min][i]){dis[i] = dis[min] + graph[min][i];//经过最小的那个点到达这个点的距离为dis[min] + graph[min][i]}}}//将最小的那个点标记check[min] = true;}
}int main()
{//初始化,memset不可以用INT_MAX赋值,因为INT_MAX为无符号数最大值为1111111111111111,而memset会将其转换为有符号数的补码也就是-1memset(dis,max_num,sizeof(dis));memset(check, false,sizeof(check));memset(graph,max_num,sizeof(graph));int n;cin >> n >> ::max;int times = n;while(times--){int x,y,z;cin >> x >> y >> z;graph[x][y] = z;graph[y][x] = z;}#if 0//输出邻接表for(int i = 0;i <= ::max;++i){for(int j = 0;j <= ::max;++j){printf("%5d ",graph[i][j]);}cout << endl;}
#endif//起点启动int start;cin >> start;dis[start] = 0;dijkstra(start);//输出每个点到起点的最短路径for(int i = 1;i <= ::max;++i){cout << i << " : " << dis[i] << endl;}
}
/*
10 7
1 3 2
1 2 5
2 4 9
3 4 3
3 6 2
4 6 4
4 5 8
5 6 9
5 7 3
6 2 7
1
*/

http://www.yayakq.cn/news/717127/

相关文章:

  • 大兴安岭做网站中国核工业第五建设有限公司待遇怎么样
  • 成都专业网站建设费用做淘宝客需要网站吗
  • 手机网站建设文章深圳网站建设方案优化
  • 网站建设排名优化技巧模板网站 可以做推广吗
  • 做网站有费用吗上市公司网站建设要求
  • 绵阳哪里可以做网站的地方青海餐饮网站建设
  • 平度市城乡建设局网站民兵信息化网站建设
  • 开封网站推广免费做手机网站
  • 关于公司网站开发的事项wordpress如何设置边栏
  • 优秀网站网址百度网站管理员工具
  • 电商网站模板建站网店营销策略有哪些
  • 房产中介网站模板网站开发与维护前景
  • 常平镇网站建设2018年网站开发语言排行
  • 网站建设协调机制网站开发摊销期
  • 必应搜索推广吉林网站优化
  • 网站建设丶金手指花总12东莞债务优化公司
  • 网站工作室 需要什么手续宁波网站建设计
  • 宁德城乡建设部网站那里可以做PC28网站的
  • 企业网站优化兴田德润优惠wordpress自带分页函数
  • 雅虎网站提交安装了两个wordpress
  • 长尾关键词挖掘工具爱网站广安专业网站建设报价
  • 网站建设陆金手指谷哥7制作wordpress博客app
  • 做购物网站多少钱嵊州市住房和建设局网站
  • 上海网站托管百度搜索风云榜游戏
  • 制作一个购物网站需要多少钱微信广告平台
  • 浙江注册公司网站长春业之峰装饰公司怎么样
  • 上海网站建设优海南注册公司的利弊
  • 做品牌折扣微信推广的网站工业app开发平台
  • 杭州在线制作网站需要个网站
  • 海洋cms做电影网站好做吗网站建设有几种方案