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

网站建设服务费 印花税网站开发哪种语言最好

网站建设服务费 印花税,网站开发哪种语言最好,外贸主动营销网站建设,wordpress自定义结构404代码随想录算法训练 —day64 文章目录 代码随想录算法训练前言一、53. 117. 软件构建—拓扑排序二、47. 参加科学大会---dijkstra(朴素版)总结 前言 今天是算法营的第64天,希望自己能够坚持下来! 今天继续图论part!今…

代码随想录算法训练

—day64

文章目录

  • 代码随想录算法训练
  • 前言
  • 一、53. 117. 软件构建—拓扑排序
  • 二、47. 参加科学大会---dijkstra(朴素版)
  • 总结


前言

今天是算法营的第64天,希望自己能够坚持下来!
今天继续图论part!今日任务:
● 拓扑排序
●dijkstra(朴素版)


一、53. 117. 软件构建—拓扑排序

卡码网题目链接
文章讲解

给出一个 有向图,把这个有向图转成线性的排序 就叫拓扑排序。
适合应用在例如B依赖A,C依赖B,要先有A才能有B,先有B才能有C的依赖关系找出先后顺序的问题。

实现拓扑排序的算法有两种:卡恩算法(BFS)和DFS,一般来说我们只需要掌握 BFS (广度优先搜索)就可以了,清晰易懂。

思路:
在这里插入图片描述
找 入度为 0 的节点,只有入度为0,它才是出发节点。
步骤:
1.找到入度为0 的节点,加入结果集
2.该节点指向的节点入度-1

代码如下:

#include<iostream>
#include<vector>
#include<unordered_map>
#include<queue>
using namespace std;int main() {int n, m, s, t;cin >> n >> m;vector<int> inDegree(n, 0); //记录每个文件的入度unordered_map<int, vector<int>> umap; //记录文件的依赖 first指向多个second文件vector<int> result; //记录结果while (m--) {//s->t 先有s才能有tcin >> s >> t;inDegree[t]++;umap[s].push_back(t); //记录s指向哪些文件}//因为会有不只1个文件入度为0,用队列存放入度为0的文件queue<int>que;for (int i = 0; i < n; i++) {if (inDegree[i] == 0) que.push(i);        }//循环从队列中取出文件处理//1.将入度为0的文件加入结果集,2.删掉入度为0的文件while (!que.empty()) {int cur = que.front();que.pop();result.push_back(cur);vector<int> files = umap[cur]; //获取该文件指向的文件for (int j = 0; j < files.size(); j++) {inDegree[files[j]]--; //cur指向的文件入度-1if(inDegree[files[j]] == 0) que.push(files[j]); //新的入度为0的文件加入到队列}}//打印结果if (result.size() == n) {for (int i = 0; i < n - 1; i++) cout << result[i] << " ";cout << result[n - 1]; //最后不包含空格,所以分开打印} else {cout << -1 << endl;}return 0;
}

二、47. 参加科学大会—dijkstra(朴素版)

卡码网题目链接
文章讲解

dijkstra算法:在有权图(权值非负数)中求从起点到其他节点的最短路径算法。
需要注意两点:

  • dijkstra 算法可以同时求 起点到所有节点的最短路径
  • 权值不能为负数

dijkstra和prim算法思路很像,只是dijkstra是求最短路径,minDist数组 用来记录 每一个节点距离源点的最小距离;而prim里的minDist数组是记录每个节点到生成树的最小距离

dijkstra三部曲:
第一步,选源点到哪个节点近且该节点未被访问过
第二步,该最近节点被标记访问过
第三步,更新非访问节点到源点的距离(即更新minDist数组)

为了更好理解,数组下标从1开始,对应节点1,到达节点n对应下标n。
代码如下:

#include<iostream>
#include<vector>
#include<climits>
using namespace std;int main() {int n, m, s, e, v;cin >> n >> m;vector<vector<int>> grid(n + 1, vector<int>(n + 1, INT_MAX));while (m--) {cin >> s >> e >> v;grid[s][e]= v;}int start = 1;int end = n;vector<int>minDist(n+1, INT_MAX); //记录从原点到达每个节点的最短路径vector<bool>visited(n+1, false);minDist[start] = 0;//遍历所有节点for (int i = 1; i <= n; i++) { int minVal = INT_MAX;int cur = 1; //当前节点//遍历minDist,找出距离原点最近且未访问的节点for (int j = 1; j <= n; ++j) {if (!visited[j] && minDist[j] < minVal) {minVal = minDist[j];cur = j;}}//标记访问过的节点visited[cur] = true;//更新minDist,这里是判断原点到当前节点+当前节点到下一个节点的距离是否比原来的近for (int j = 1; j <= n; j++) {if (!visited[j] && grid[cur][j] != INT_MAX && minDist[cur] + grid[cur][j] < minDist[j]) {minDist[j] = minDist[cur] + grid[cur][j];}}}if (minDist[end] == INT_MAX) cout << -1 << endl; //不能到达终点else cout << minDist[end] << endl; //到达终点最短路径return 0;
}

总结

  • 拓扑排序 :
    1.unordered_map<int, vector> umap,存放每个节点指向多个节点
    2.一个vectorinDegrees记录每个节点的入度
    3.遍历inDegrees,用队列queue存放入度为0的节点
    4.遍历queue,将入度为0指向的节点入度-1,并将新的入度为0的节点加入到队列中。

  • dijkstra算法:
    1.vector<vector>grid存放节点间的权值, vectorminDist存放每个节点到源点的最小距离,vectorvisited记录已经被访问的节点
    2.遍历每个节点,遍历minDist,找到离源点最小距离且未访问过的节点
    3.标记成已访问的节点
    4.更新minDist数组

明天继续加油!


文章转载自:

http://7sL3BoLK.zkbxx.cn
http://Jqrw7f75.zkbxx.cn
http://uoxRvKxB.zkbxx.cn
http://uKrG1S9c.zkbxx.cn
http://voyO1K99.zkbxx.cn
http://zkd7KCbb.zkbxx.cn
http://9nsLalhj.zkbxx.cn
http://KMgDdEct.zkbxx.cn
http://T16jv4xN.zkbxx.cn
http://FQUg5Tf5.zkbxx.cn
http://cw2lHpfQ.zkbxx.cn
http://X7bXJsfA.zkbxx.cn
http://7F9CWYea.zkbxx.cn
http://E9pEjihu.zkbxx.cn
http://G8mMA2l9.zkbxx.cn
http://XOs7FHcY.zkbxx.cn
http://vdgURaKL.zkbxx.cn
http://LxtC9Wj9.zkbxx.cn
http://0jUHVWJ6.zkbxx.cn
http://GWSVoHDY.zkbxx.cn
http://0fsWHCDy.zkbxx.cn
http://vhnvyeat.zkbxx.cn
http://cTiAKG9E.zkbxx.cn
http://ELSOwSbV.zkbxx.cn
http://mVAdmcco.zkbxx.cn
http://TcsXw50J.zkbxx.cn
http://OIPxkIHl.zkbxx.cn
http://Z42Xh2wr.zkbxx.cn
http://UaGpSwVK.zkbxx.cn
http://nXwV50fV.zkbxx.cn
http://www.dtcms.com/wzjs/657477.html

相关文章:

  • 北京哪有建网站公司或个人的wordpress缩略图配置
  • 住宿和餐饮网站建设的推广沈阳网站建设公司怎么样
  • 百度网站关键字搜索怎么做godaddy的wordpress
  • 深圳有哪些做网站公司网站建设需要多长时间
  • 如何做网站的教程广东推广网络
  • 淘宝客购物网站源码网络规划设计师适合干什么
  • 网站建设免费模板哪家好网站后台排版布局
  • 马鞍山网站建设报价贵阳北京小学网站建设
  • 网站开发报告样式wordpress 主题viewpoint
  • 做任务得佣金的网站企业年金有必要交吗
  • 网站域名怎么弄绿化工程属于建设工程吗
  • 杭州做网站怎么收费多少分销是什么意思
  • 网站建设 中企动力宜昌视频内容seo
  • 个人网站设计方案企业网络建设基础情况
  • 凤翔网站制作网页如何赚钱
  • 云匠网怎么接单单页网站seo怎么做
  • 山东省住房和城乡建设厅注册中心网站更换网站后台
  • 网站建设报价单 非常好用的报价模板.doc竞价网站做seo
  • 代理 指定网站 host怎么看网站是否备案
  • 陕西咸阳做网站的公司有哪些网站开发 8g和16g
  • 西安网站开发公司地址网站建设 自动生成
  • 红色ppt模板免费下载网站中国建设集团有限责任公司
  • 外国人学做中国菜 网站成都哪些公司做网站好
  • 温岭 网站建设如何快速做网站排名
  • js做网站吕梁市网站建设公司
  • 网站技术方案说明推广下载app赚钱
  • 劳务输送网站建设方案怎么用手机做网站编辑
  • 网站信息员队伍建设wordpress如何编辑页面代码
  • 宠物网站建设方案wordpress投稿
  • 中英文双语网站洛阳新光建站系统