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

订票网站模板google推广平台怎么做

订票网站模板,google推广平台怎么做,app下载平台哪个好,wordpress文章页面添加内容Floyd 算法(求多源汇最短路) 题目链接:97. 小明逛公园 题目描述: 小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力&…

Floyd 算法(求多源汇最短路)

题目链接:97. 小明逛公园

题目描述:

小明喜欢去公园散步,公园内布置了许多的景点,相互之间通过小路连接,小明希望在观看景点的同时,能够节省体力,走最短的路径。 

给定一个公园景点图,图中有 N 个景点(编号为 1 到 N),以及 M 条双向道路连接着这些景点。每条道路上行走的距离都是已知的。

小明有 Q 个观景计划,每个计划都有一个起点 start 和一个终点 end,表示他想从景点 start 前往景点 end。由于小明希望节省体力,他想知道每个观景计划中从起点到终点的最短路径长度。 请你帮助小明计算出每个观景计划的最短路径长度。

算法思想:

使用三重for循环,遍历从1~n节点,grip二维数组含义是表示点i和j间的距离,将其初始化为INT_MAX,对角线初始化为0。使用grip[i][j] = min(grip[i][j],grip[i][k]+grip[k][j])来判断最短路径。

代码:

#include<iostream>
#include<vector>
#include<climits>
using namespace std;void floyd(vector<vector<int>>& graphs)
{int n = graphs.size() - 1;for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)if(graphs[i][k] != INT_MAX && graphs[k][j] != INT_MAX)graphs[i][j] = min(graphs[i][j],graphs[i][k] + graphs[k][j]);
}int main()
{int n,m;cin >> n >> m;vector<vector<int>> graphs(n+1,vector<int>(n+1,INT_MAX));for(int i = 1; i <= n; i++) graphs[i][i] = 0;for(int i = 0; i < m; i++){int u,v,w;cin >> u >> v >> w;graphs[u][v] = min(graphs[u][v],w);graphs[v][u] = min(graphs[v][u],w);}floyd(graphs);int q;cin >> q;while(q--){int start,end;cin >> start >> end;if(graphs[start][end] == INT_MAX) cout << -1 << endl;else cout << graphs[start][end] << endl;}return 0;
}

A*算法

题目链接:127. 骑士的攻击

题目描述:

在象棋中,马和象的移动规则分别是“马走日”和“象走田”。现给定骑士的起始坐标和目标坐标,要求根据骑士的移动规则,计算从起点到达目标点所需的最短步数。

棋盘大小 1000 x 1000(棋盘的 x 和 y 坐标均在 [1, 1000] 区间内,包含边界)

算法思想:

1、该算法是对宽搜算法的优化,能保证有方向地去搜索点。在宽搜基础上增添了权重概念。

2、如何保证有方向搜索--对每一个点设置一个权重f,f=g+h,g表示起点达到目前遍历节点的距离,h表示目前遍历的节点到达终点的距离。距离计算公式如下:

  • 曼哈顿距离,计算方式: d = abs(x1-x2)+abs(y1-y2)
  • 欧氏距离(常用,不会超时) ,计算方式:d =  (x1-x2)^2 + (y1-y2)^2 
  • 切比雪夫距离,计算方式:d = max(abs(x1 - x2), abs(y1 - y2))

3、每次使用具有最小权重的点来更新节点位置--->使用优先级队列保存

代码:

#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;int b1,b2;
int dx[8] = {-1,-1,1,1,2,2,-2,-2};
int dy[8] = {2,-2,2,-2,-1,1,-1,1};typedef struct Knight
{int a1,a2;int f,g,h;bool operator < (const struct Knight& k) const{return k.f < f;}
}Knight;int function(const Knight& knt)
{return (knt.a1 - b1)*(knt.a1 - b1) + (knt.a2 - b2)*(knt.a2 - b2);
}void Astar(vector<vector<int>>& step, const Knight& knt, priority_queue<Knight>& pq)
{Knight cur,next;while(!pq.empty()){cur = pq.top(),pq.pop();if(cur.a1 == b1 && cur.a2 == b2) break;for(int i = 0; i < 8; i++){next.a1 = cur.a1 + dx[i];next.a2 = cur.a2 + dy[i];if(next.a1 < 1 || next.a1 > 1000 || next.a2 < 1 || next.a2 > 1000) continue;if(!step[next.a1][next.a2]){step[next.a1][next.a2] = step[cur.a1][cur.a2] + 1;next.g = cur.g + 5;next.h = function(next);next.f = next.g + next.h;pq.push(next);}}}
}int main()
{int a1,a2,n;cin >> n;while(n--){priority_queue<Knight> pq;vector<vector<int>> step(1010,vector<int>(1010));cin >> a1 >> a2 >> b1 >> b2;Knight knt;knt.a1 = a1;knt.a2 = a2;knt.g = 0;knt.h = function(knt);knt.f = knt.g + knt.h;pq.push(knt);Astar(step,knt,pq);cout << step[b1][b2] << endl;}return 0;
}

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

相关文章:

  • 做网站费用怎么入账城乡住房和城乡建设厅网站首页
  • 北京大兴网站建设公司咨询领优惠券的网站怎么建设的
  • 做外贸用哪些网站wordpress 邮箱设置
  • 如何做收费网站怎么免费给网站做收录
  • 罗湖附近公司做网站建设免费网址注册
  • 男女生做羞羞网站wordpress自动添加动态内容
  • 深圳高端网站建设公司排名网站维护后期费用
  • 廊坊大城网站建设软件开发文档国标
  • 北京东宏建设网站软件实施流程八个阶段
  • 网站开发当前城市定位功能视频网站开发费用
  • 网站开发与电子商务免费邮箱163登录入口
  • 公司网站注册要多少钱免费推广软件平台seo博客
  • 沧州青县网站建设wordpress5.1更新
  • 深圳建设网站哪里好网页游戏传奇游戏
  • 平面设计师网站都有哪些广州地铁集团有限公司
  • 杭州网站建设公司服务东莞市公司网站建设服务机构
  • 网站建设捌金手指专业7郑州新感觉会所网站哪里做的
  • 权重高的博客网站做家居的网站
  • 望城警务督察网站建设已有网站做百度推广
  • 网页设计与制作模版台州百度推广优化
  • 黄冈网站建设流程嘉兴seo外包公司
  • ppt网站有哪些福田祥菱v1单排
  • 影响网站排名的因素女生wordpress网站适合
  • 深圳企业网站建设公司福州做网站的公司电话
  • 旅行社网站建设需求分析北京建设工程信息网交易平台
  • 平湖公司网站建设wordpress widgets_init
  • 开发企业网站设计惠州网站建设哪里找
  • 巩义网站建设案件数据广州好的网站设计公司
  • 中职学校网站建设情况总结电子商务网站采用的开发技术
  • 网站建设版面分几页合适工作总结加强部门网站建设