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

免费的行情软件网站下载免费苏州城乡和住房建设局网站首页

免费的行情软件网站下载免费,苏州城乡和住房建设局网站首页,如何创建个人网站英语作文,无锡网站制作哪家好0x01 实验目的 掌握无向图的创建、遍历方法。 0x02 实验内容 创建图类#xff0c;存储结构使用邻接矩阵。输入图的节点数n(小于10个)、边数m#xff0c;节点分别用1-n代表。采用“起始节点#xff0c;终止节点#xff0c;权值”输入图的m条边#xff0c;创建图。输出从…0x01 实验目的 掌握无向图的创建、遍历方法。 0x02 实验内容 创建图类存储结构使用邻接矩阵。输入图的节点数n(小于10个)、边数m节点分别用1-n代表。采用“起始节点终止节点权值”输入图的m条边创建图。输出从节点1开始的BFS广度遍历在遍历过程中如果从一个节点出发有多个可以选择的节点则优先选择编号较小的节点。输出从节点1开始的DFS深度遍历在遍历过程中如果从一个节点出发有多个可以选择的节点则优先选择编号较小的节点。输出从第1节点到最后一个节点即第n个节点最短路径的长度如果没有路经输出0。 0x03 实验过程分析 建立Class-graph node点数edge边数noEdge无边的标识a二维数组指针形式的创建过程二维数组的值代表权重 class graph {public:graph(int n, int e) {node n;edge e;a new int *[n1];for(int i 1; i n; i) {a[i] new int[n1];for(int j 1; j n; j) {a[i][j] noEdge;}}}private:int node;int edge;int ** a;int noEdge 0; };插入边操作 因为是无向图所以边是相互的。 void insertEdge(int start, int end, int weight) {a[start][end] weight;a[end][start] weight;}广度优先搜索 用队列因为要求输出逗号所以写的比较复杂。 void BFS(int v, int reach[], int label) {bool flag false;queueint q;reach[v] label;q.push(v);while(!q.empty()) {int w q.front();q.pop();if(flag false) {flag true;coutw;} else cout,w;for(int i 1; i node; i) {if(a[w][i] ! 0 reach[i] ! label) {q.push(i);reach[i] label;}}}}简化后无输出。 v搜索的起点reach存储该点是否到达过label到达后的标记 void BFS(int v, int reach[], int label) {queueint q;reach[v] label;q.push(v);while(!q.empty()) {int w q.front();q.pop();for(int i 1; i node; i) {//当有这条边没到达过才会将其入队if(a[w][i] ! 0 reach[i] ! label) {q.push(i);reach[i] label;}}}}深度优先搜索 用堆栈递归调用的思想。 void DFS(int v, int reach[], int label) {reach[v] label;if(fl false) {coutv;fl true;} else {cout,v;}for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {DFS(i,reach,label);}}}同样简化后代码 v搜索的起点reach存储该点是否到达过label到达后的标记 因为要求从小的数开始输出所以没有“恢复” void DFS(int v, int reach[], int label) {reach[v] label;for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {DFS(i,reach,label);}}}加上“恢复” void DFS(int v, int reach[], int label) {reach[v] label;for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {DFS(i,reach,label);reach[i] 0;}}}最短路径起点到终点 我的思路是 首先用宽度优先搜索判断是否能够到达终点看是否被到达标记标记到不能的话直接return 0然后用深度优先搜索必须用带“恢复”的因为此时我们要遍历全部的路径求他们的权重比较而不只是遵循该规则的路径 – 如果从一个节点出发有多个可以选择的节点则优先选择编号较小的节点寻找每一条从起点到终点的路径然后比较它们的权重取最小值最后返回。 int pathLength(int start) {int reach[100] {0};int rea[100] {0};bfs(1,reach,2);if(reach[node] ! 2) return 0;else {dfs(1,rea,2,0);return crr[0];}}void dfs(int v, int reach[], int label, int weight) {reach[1] label;for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {weight a[v][i];//到达终点就退出if(i node) {//与之前的权重比较小就保留大就舍弃if(weight crr[0]) crr[0] weight;return;} else {reach[i] label;dfs(i,reach,label,weight);reach[i] 0;//一定要减掉不仅要恢复标记还要恢复权重否则结果会偏大weight - a[v][i];}}}}void bfs(int v, int reach[], int label) {queueint q;reach[v] label;q.push(v);while(!q.empty()) {int w q.front();q.pop();for(int i 1; i node; i) {if(a[w][i] ! 0 reach[i] ! label) {q.push(i);reach[i] label;}}}}输入处理 输入全都是字符串属实是绷不住了处理麻烦死了 。 直接看下面完整代码叭。。 在这贴一组测试数据 输入 5,8 1,2,10 1,3,50 1,5,100 2,3,200 2,4,30 3,4,290 3,5,250 4,5,280输出 12354 12345 1000x04 完整代码 #includebits/stdc.h using namespace std; const int M 100; int arr[M]; int brr[M]; int crr[M]; int path[M]; bool fl false; class graph {public:graph(int n, int e) {node n;edge e;a new int *[n1];for(int i 1; i n; i) {a[i] new int[n1];for(int j 1; j n; j) {a[i][j] noEdge;}}}void insertEdge(int start, int end, int weight) {a[start][end] weight;a[end][start] weight;}void BFS(int v, int reach[], int label) {bool flag false;queueint q;reach[v] label;q.push(v);while(!q.empty()) {int w q.front();q.pop();if(flag false) {flag true;coutw;} else cout,w;for(int i 1; i node; i) {if(a[w][i] ! 0 reach[i] ! label) {q.push(i);reach[i] label;}}}}void DFS(int v, int reach[], int label) {reach[v] label;if(fl false) {coutv;fl true;} else {cout,v;}for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {DFS(i,reach,label);}}}int pathLength(int start) {int reach[100] {0};int rea[100] {0};bfs(1,reach,2);if(reach[node] ! 2) return 0;else {dfs(1,rea,2,0);return crr[0];}}void dfs(int v, int reach[], int label, int weight) {reach[1] label;for(int i 1; i node; i) {if(a[v][i] ! 0 reach[i] ! label) {weight a[v][i];if(i node) {if(weight crr[0]) crr[0] weight;return;} else {reach[i] label;dfs(i,reach,label,weight);reach[i] 0;weight - a[v][i];}}}}void bfs(int v, int reach[], int label) {queueint q;reach[v] label;q.push(v);while(!q.empty()) {int w q.front();q.pop();for(int i 1; i node; i) {if(a[w][i] ! 0 reach[i] ! label) {q.push(i);reach[i] label;}}}}private:int node;int edge;int ** a;int noEdge 0; }; int main() {coutInputendl;string n ,m ;string S;cinS;int temp;for(int i 0; i S.length(); i) {if(S.at(i) ,) {temp i;break;}}for(int p 0; p temp; p) {n S.at(p);}for(int p temp 1; p S.length(); p) {m S.at(p);}int num1 stoi(n);int num2 stoi(m); graph g(num1,num2);for(int i 0; i num2; i) {string s;cins;int fir 0;int sec 0;for(int j 0; j s.length(); j) {if(s.at(j) , fir 0) fir j;else if(s.at(j) , fir ! 0) {sec j;break;}}string s1 ;string s2 ;string s3 ;for(int p 0; p fir; p) {s1 s.at(p);}for(int q fir 1; q sec; q) {s2 s.at(q);}for(int o sec 1; o s.length(); o) {s3 s.at(o);}g.insertEdge(stoi(s1), stoi(s2), stoi(s3));}coutOutputendl;g.BFS(1,arr,2);coutendl;g.DFS(1,brr,2);coutendl;//让第0组权重无限大其他就都会比他小了crr[0] 10000000;int ans g.pathLength(1);coutansendl;coutEnd;return 0; }
http://www.zqtcl.cn/news/892458/

相关文章:

  • seo建站收费地震郑州做网站开发销售
  • 东莞整站优化推广公司找火速建设企业网站要多少钱
  • 网站备案 两个域名东莞保安公司联系电话
  • 网站专业制作公司律师如何在网上推广
  • 免费培训seo网站一直免费的服务器下载安装
  • 广州h5网站制作公司做竞价网站 要注意什么
  • 太原网站搭建推广id怎么编辑wordpress
  • 网站开发网站设计制作广告设计与制作基础知识
  • 企业建设H5响应式网站的5大好处网站备案后经营
  • 网站数据流分析怎么做河北搜索引擎推广方法
  • 哈尔滨网站建设咨询辽宁建设工程信息网怎么看项目经理是不是被锁住
  • 成立做网站的公司搭建网站有费用吗
  • 标志设计说明案例北京网站优化seo
  • 国外app设计网站佛山网站推广市场
  • 北京矿建建设集团有限公司 网站科技软件下载
  • 公司建网站要多少钱wordpress轮播框
  • 怎么看一个网站什么语言做的全网最新首码项目
  • 深圳网站建设ue网站空间和流量
  • 网站前端设计要做什么游仙建设局官方网站
  • 大型门户网站建设哪家好进一步加大网站集约化建设力度
  • 网站里面那些工作是做晚上兼职的钱包网站建设策划
  • 网站开发实现的环境自豪地采用wordpress 怎么去掉
  • ic商城网站建设网站备案关闭影响排名
  • qq官方网站进入wordpress调用文章某个分类
  • 南充网站建设设计略奥企业网站管理系统怎么修改密码
  • 网站建设里的知识360云主机可以建设网站吗
  • 创建网站代码上海网络公司查询
  • 电子商务网站建设与管理实训报告百度权重划分等级
  • 网站建设响应式是什么医院网站建设方案策划书
  • 开鲁网站seo不用下载男女做羞羞事动画网站免费