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

企业的做网站网站推广交换链接

企业的做网站,网站推广交换链接,新闻网站开发报告,做网站西安Floyd 算法 重点&#xff1a;多源最短路径算法&#xff0c;前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径 时间复杂度&#xff1a; O(n^3)空间复杂度&#xff1a;O(n^2) #include <iostream> #include <vector> using namespace std…

Floyd 算法

重点:多源最短路径算法,前的最短路径算法是单源的也就是只有一个起点。递推每个节点之间最短的路径

  • 时间复杂度: O(n^3)
  • 空间复杂度:O(n^2)
#include <iostream>
#include <vector>
using namespace std;int main() {int n, m, p1, p2, val;cin >> n >> m;vector<vector<int>> grid(n + 1, vector<int>(n + 1, 10005));  // 因为边的最大距离是10^4for(int i = 0; i < m; i++){cin >> p1 >> p2 >> val;grid[p1][p2] = val;grid[p2][p1] = val; // 注意这里是双向图}// 开始 floydfor (int k = 1; k <= n; k++) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {grid[i][j] = min(grid[i][j], grid[i][k] + grid[k][j]);}}}// 输出结果int z, start, end;cin >> z;while (z--) {cin >> start >> end;if (grid[start][end] == 10005) cout << -1 << endl;else cout << grid[start][end] << endl;}
}

A * 算法

重点:Astar关键在于启发式函数,也就是影响广搜或者 dijkstra 从容器(队列)里取元素的优先顺序

#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
int moves[1001][1001];
int dir[8][2]={-2,-1,-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2};
int b1, b2;
// F = G + H
// G = 从起点到该节点路径消耗
// H = 该节点到终点的预估消耗struct Knight{int x,y;int g,h,f;bool operator < (const Knight & k) const{  // 重载运算符, 从小到大排序return k.f < f;}
};priority_queue<Knight> que;int Heuristic(const Knight& k) { // 欧拉距离return (k.x - b1) * (k.x - b1) + (k.y - b2) * (k.y - b2); // 统一不开根号,这样可以提高精度
}
void astar(const Knight& k)
{Knight cur, next;que.push(k);while(!que.empty()){cur=que.top(); que.pop();if(cur.x == b1 && cur.y == b2)break;for(int i = 0; i < 8; i++){next.x = cur.x + dir[i][0];next.y = cur.y + dir[i][1];if(next.x < 1 || next.x > 1000 || next.y < 1 || next.y > 1000)continue;if(!moves[next.x][next.y]){moves[next.x][next.y] = moves[cur.x][cur.y] + 1;// 开始计算Fnext.g = cur.g + 5; // 统一不开根号,这样可以提高精度,马走日,1 * 1 + 2 * 2 = 5next.h = Heuristic(next);next.f = next.g + next.h;que.push(next);}}}
}int main()
{int n, a1, a2;cin >> n;while (n--) {cin >> a1 >> a2 >> b1 >> b2;memset(moves,0,sizeof(moves));Knight start;start.x = a1;start.y = a2;start.g = 0;start.h = Heuristic(start);start.f = start.g + start.h;astar(start);while(!que.empty()) que.pop(); // 队列清空cout << moves[b1][b2] << endl;}return 0;
}

总结

Floyd算法本质是动态规划,递推算出每个节点之间的最短距离。可以用于有负权值的最短路径。

Astar 是一种 广搜的改良版。 有的是 Astar是 dijkstra 的改良版。

http://www.tj-hxxt.cn/news/45098.html

相关文章:

  • iapp如何用网站做软件宁波网站推广公司有哪些
  • 如何给一个网站做优化河南网站推广多少钱
  • 做网站运营好还是SEO好seo关键词排名优化评价
  • 品牌商城网站开发网络推广协议合同范本
  • 旅游网站设计与制作课程设计电商运营基本知识
  • 关于南宁网页的介绍seo排名优化软件价格
  • 微信上做网站编辑百度快速排名平台
  • 小说网站架构seo是指什么意思
  • 宁波 手机网站建设seo经理招聘
  • 做ppt找素材的网站百度竞价系统
  • 厦门网站建设价格xm37北京互联网公司排名
  • 栾川住房和城乡建设委员会网站博客网站
  • 网站搜索功能怎样做海外广告优化师
  • 信息发布型网站建设的特点新媒体seo培训
  • 成都旅游吉林网络seo
  • 遵义网红打卡seo如何优化的
  • 广州网站建设教程百度网页版登录入口官网
  • 做的网站没有手机版2024年疫情还会封控吗
  • 如何做网站品类北大青鸟
  • 网站制作与建立百度推广是什么意思
  • 基于网站的app开发怎么网站排名seo
  • 情女照片做杯子网站外链的作用
  • 公司网站建设包含的内容百度搜图入口
  • 怎么学习做网站北京seo外包 靠谱
  • 一个空间 多个网站seo网站推广是什么
  • 国外哪些网站有黄图网站排名快速提升
  • office做的网站怎么发布app营销
  • 网站空间位置是什么品牌网络营销推广方案策划
  • 上海网站开发开发好的公司电话成人电脑培训班办公软件
  • 社保网站人员减少怎么做seo引擎优化是什么