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

公司备案 网站主办者名称软文范例大全100字

公司备案 网站主办者名称,软文范例大全100字,中国建设网站轨道自检验收报告表,网站 国际化在一些带权图里面,时长需要我们求出某一点到另一点的最短距离,floyed算法就是求最短路径的算法之一。其核心思想是经过某点中转,加入A点到B点的距离是10,B点到C点的距离为5,A点到C点的距离为20(此图将距离设…

在一些带权图里面,时长需要我们求出某一点到另一点的最短距离,floyed算法就是求最短路径的算法之一。其核心思想是经过某点中转,加入A点到B点的距离是10,B点到C点的距离为5,A点到C点的距离为20(此图将距离设定为权值),而且该图为有向图。图的形状如下图所示:

可以看出,如果直接从A点到C点,权值是20,如果经过B点中转,然后到达C点,那么权值将变为15,这就是A到C点的最短路径(A->B->C)。众所周知,我们可以使用二维数组来存储图(该二维数组被称为邻接矩阵),当我们需要求最短路径时,在中转时,判断A点到C点的距离是否大于A点到B点再到C点的距离,如果大于将更新邻接矩阵中的A到C点的距离为A点到B点再到C点的距离

if(length[A][C]>length[A][B]+length[B][C])length[A][C]=length[A][B]+length[B][C]

 如果给了N个点,那么将需要N次中转。因为邻接矩阵是一个NxN的二维数组,我们需要遍历这个数组。如下一个例子,首先给出点的个数和点的坐标,在给出点的连接关系,求出S点到T点的距离(S和T为用户的输入数据)

1.点的个数和坐标

4

1 1(第一个点)

2 3(第二个点)

3 4 (第三个点)

4 5(第四个点)

2.点的连接关系

1 2(表示第一个点和第二个点是联通的)

2 3

3 4

1 4

3.用户输入

S=2,T=4;

源码:

floyed.cpp

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
void floyed(double arr[][10],int m) {//floyed算法for (int k = 0; k < m; k++) {for (int i = 0; i < m; i++) {for (int j = 0; j < m; j++) {if ((i != j )&& (i != k) && (j != k) && (arr[i][k] + arr[k][j] < arr[i][j])) {arr[i][j] = arr[i][k] + arr[k][j];//更新邻接矩阵的值}}}}
}

main.cpp

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cmath>
#include <vector>
#include <cstring>
using namespace std;
void floyed(double arr[][10],int m) {//floyed算法for (int k = 0; k < m; k++) {for (int i = 0; i < m; i++) {for (int j = 0; j < m; j++) {if ((i != j )&& (i != k) && (j != k) && (arr[i][k] + arr[k][j] < arr[i][j])) {arr[i][j] = arr[i][k] + arr[k][j];}}}}
}
int main(){vector<vector<double> > array;int m;cin >> m;//点的个数for (int i = 0; i < m; i++) {vector<double> nums;int x, y;cin >> x >> y;//横纵坐标nums.push_back(x);nums.push_back(y);array.push_back(nums);}int n;cin >> n;double arr[10][10];//邻接矩阵存图for (int i = 0; i <= 9; i++) {for (int j = 0; j <= 9; j++) {if (i == j) {arr[i][j] == 0;}else {arr[i][j] = 1000000007;//初始化邻接矩阵,是最大值说明两点不可达}}}for (int i = 0; i < n; i++) {int x, y;//两个点是否联通cin >> x >> y;x = x - 1; //减一是因为邻接矩阵的下标从0开始y = y - 1;arr[x][y] = sqrt(pow(double(array[x][0]-array[y][0]),2)+pow(double(array[x][1]-array[y][1]),2));//求出联通两点之间的距离arr[y][x] = arr[x][y];}floyed(arr, m);//调用floyed算法int s, t;cin >> s >> t;s = s - 1;t = t - 1;cout << arr[s][t] << endl;return 0;
}

运行结果:

第二个点到第四个点的最短距离为2.82843。该算法时间复杂度为O(N^3),虽然该算法可以处理带有负权值的图,但是不能处理负环的图。负环,又叫负权回路,负权环,指的是一个图中存在一个环,里面包含的边的边权总和<0。在存在负环的图中,是求不出最短路径的,因为只要在这个环上不停的兜圈子,最短路径就会无限小。

http://www.hrbkazy.com/news/3167.html

相关文章:

  • 加强政府网站信息内容建设的意见网站快速收录软件
  • 做海外生意的网站seo咨询服务价格
  • 全国的网站建设网页优化包括什么
  • 国内用python做的网站网络营销培训
  • wap网站建设公司北京网站营销与推广
  • 厦门b2b网站建设网站子域名查询
  • 门户网站建设意义怎么简单制作一个网页
  • 江苏建设厅网站查询ip域名查询网站入口
  • 做教育类的网站名深圳seo培训
  • 长沙抖音代运营公司seo排名工具给您好的建议
  • 楚雄网站建设rewlkj千锋教育介绍
  • 北京网站建立日本网络ip地址域名
  • 唐山网站建设最好的网站推广怎么做
  • 网站建好后广告是不是需要广州seo服务外包
  • 别人的网站是怎么做的最新搜索引擎排名
  • 网站维护外包方案万能浏览器
  • 教学网站系统流程图百度广告电话号码是多少
  • 卖环保设备做哪个网站好竞价推广开户
  • 爱站库seo整站优化方案
  • 做网站西安哪家好颜色广告
  • 简约网站设计欣赏seo黑帽培训
  • 伪静态一个虚拟空间做两个网站今天全国疫情最新消息
  • 搭建网站 软件免费培训机构
  • 公司商城网站开发费做什么科目网络营销模式
  • 孝感有做网站的公司吗网络营销运营公司
  • 网站怎么做推广和宣传国内新闻最新消息今天
  • 创可贴app海报制作网站百度网页版登录入口官网
  • 中文企业网站模板免费下载淘宝指数官网
  • 专业武汉网站建设公司网站seo完整seo优化方案
  • 什么是网络营销产生的观念基础搜索引擎优化的要点