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

南通优普网站建设企业网站建设如何选择网络公司

南通优普网站建设,企业网站建设如何选择网络公司,项目立项流程图,上海关键词自动排名今天,解决了,多个点的最短路问题 用的dfs,配上了floyed计算出的广源距离 难点是要记录路线,dfs记录路线就很烦 但是好在结束了,经过无数的测试,确保没啥问题(应该把) 来看看我的代码 void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_A…

今天,解决了,多个点的最短路问题

用的dfs,配上了floyed计算出的广源距离

难点是要记录路线,dfs记录路线就很烦

但是好在结束了,经过无数的测试,确保没啥问题(应该把)

来看看我的代码


void dfs(int b[], int x, int* sum, int last, int sums, int a[], BFS& s, Floyd_AssistArray* fl) {if (x == s.size) {if (*sum > sums) {*sum = sums;printf("sun %d\n", *sum);for (int ko = 2;ko <= s.size;ko++) {b[ko] = a[ko];printf("ssssss\n");}}}else {for (int ko = 2;ko <= s.size;ko++) {if (s.map[s.mapr[ko]] == 0&&fl->Shortest[last][s.mapr[ko]]!=nocnect) {x++;printf("sss%d\n", x);sums += fl->Shortest[last][s.mapr[ko]];printf("sum%d\n", sums);s.map[s.mapr[ko]] == 1;a[x] = s.mapr[ko];dfs(b, x, sum, s.mapr[ko], sums, a, s, fl);a[x] = 0;sums-= fl->Shortest[last][s.mapr[ko]];s.map[s.mapr[ko]] == 0;x--;}}}}
//bfs,的算法,返回距离最短的,走法void findr(int i, int a[], AMGraph* f, Floyd_AssistArray* fl) {int b[11] = { 0 };b[1] = i;//起点int j = 1;for (int io = 1;io <= 10;io++) {if (a[io] != 0 &&io!=i) {j++;b[j] = io;}}for (int gh = 1;gh <= j;gh++) {printf("%d\n", b[gh]);}BFS s;for (int j = 1;j <= 10;j++) {s.map[j] = 0;s.mapr[j] = b[j];}s.map[i] = 1;//给起点标记s.mapr[1] = i;s.size = j;int sum = nocnect;int c[11] = { 0 };c[1] = i;dfs(b, 1, &sum, i, 0, c, s, fl);//print();
}
//处理信息

可以看到,bfs函数传的东西有点多

没办法,我来解释一下,b数组是返回答案的数组,sum是返回最短距离的最终答案

x是搜到了第几个数(第几个点),last是记录上个点,要的是两点之间的距离,所以要记录上个点

sums是记录距离和

a数组是记录点的

BFS 是提供dfs要的变量,比如标记的地图

和原来的点集以及有几个点

Floyd_AssistArray* fl  我们要的距离

typedef struct {int map[11];//打标记的int mapr[11];//记录点int size;//记录个数 
}BFS;
//dfs的辅助数组

辅助数组的核心内容

接下来就是界面

为了可以,直接点击输入点把界面又搞了一下

 

黑色代表景点,被选中了,也可以取消选中 

跑完bfs的数组就要开始回溯了路路径了

PathStack ph;ph.top = 0;for (int h = 1;h <= s.size;h++) {printf("%d\n", b[h]);}for (int jk = s.size;jk >= 2;jk--) {int k = 0;while (fl->PrePath[b[jk]][b[jk-1]] != b[jk - 1]) {Push(&ph, b[jk]);printf(" %d\n", b[jk]);k = 1;b[jk] = fl->PrePath[b[jk]][b[jk - 1]];}if (k == 0) {Push(&ph, b[jk]);printf(" %d\n", b[jk]);}

回溯到栈内,明天写了输出函数就可以用栈直接遍历了 

胜利就在眼前了呀!!现在811行

明天基本上得有1k了,但是还是写的很不好哎呀我是真的菜

以上代码(的bug全部测试完了,痛真的太痛了)

http://www.hyszgw.com/news/52098.html

相关文章:

  • 大连做网站 智域策划公司名字大全
  • 中国神鹰网站建设专业中山建网站公司
  • 张家港做企业网站工作总结ppt模板免费下载 素材
  • 一流的赣州网站建设江苏省交通建设质监网站
  • 好网站建设百度网络营销的概念与含义
  • wordpress子文件夹建站电子商务网站建设与维护致谢词
  • 每天一篇好文章网站网站开发基本流程
  • 如何做网站词库招牌做的好的网站有哪些
  • 用软件建网站开个网站需要什么条件
  • 校园官方网站建设的书籍免费建网站系统
  • 重庆渝云建设有限公司官方网站制作公司网站在公账汇款时用途备注什么
  • 专门做网站的软件vi设计公司网
  • 网站建设背景浅变色怎么调出来2022年企业所得税税率表一览
  • 天津市网站建设管理办法网站建设落地页
  • 校园学生网站开发wordpress滑块代码
  • 温州公司建设网站江山集团网站建设
  • 网站整站优化表白视频制作软件app
  • 河东手机站怎么做彩票网站的代理
  • 购物商城网站设计方案网页微信支付
  • 苏州网站建设哪家快网站收录排名怎么做
  • 做婚恋交友类网站佛山做网站3lue
  • 临沂专业做网站哪些网站可以做网店
  • 广州网站设计公司哪家好WordPress进
  • 要想学做网站建设施工网络平台
  • 南昌集团制作网站公司网上怎么找客户资源
  • wordpress分站网站建设合同 英文
  • 梅州做网站多少钱平面设计师需要会什么软件
  • 定制建站网站建设课的感想
  • 站长工具果冻传媒学校官方网站建设
  • 网站模版购买企业网站制作方案