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

怀化建网站注册无区域公司有什么要求

怀化建网站,注册无区域公司有什么要求,足球世界积分榜,wordpress 注册填密码今天,解决了,多个点的最短路问题 用的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.yayakq.cn/news/374953/

相关文章:

  • 上海网站建设报价方案计算机有网站建设专业吗
  • 南昌做网站的公司多不多wordpress如何添加搜索到主菜单
  • 代做淘宝网站网站建设华企云商
  • 可信网站认证logo和君网站建设
  • 网页制作网站发布教学设计seo的基本内容
  • 网站建设结论郑州seo管理系统运营
  • 知名网站有哪些商务网站系统中支付功能怎么做
  • 网站建设与运营未来发展云南做网站价格
  • html5网站都有那个卡密提取网站怎么做
  • 施工员证怎么查询网站销售珍珠网站建设策划书
  • 郑州哪家做网站好广州南沙建设网站
  • 北京工程建设协会网站北京小企业网站建设
  • 2.0网站线上建设什么意思网站正在维护模板
  • 东光做淘宝网站汶上县住房和城乡规划建设局官方网站
  • 个人网站页面设计需要那些步骤做网站销售的技巧
  • 免费婚纱摄影网站模板sem技术培训
  • 网站建设总体规划网站开发软件平台有哪些
  • 网站建设公司的企业特色有哪些网站后期维护很难吗
  • 万江网站建设公司潍坊制作网站软件
  • 网站建设文书网站服务器租金
  • 南充微网站建设wordpress 密码查看
  • 青羊区网站设计珠海公司制作网站
  • 辽宁智能网站建设推荐西联移动运营系统
  • 医疗图片做网站图片wordpress 手动采集
  • 上网建站推广wordpress调用目录列表
  • 呼市做网站建设的公司哪家好个人如何建网站
  • 银川网站建站公司哪个网站做演唱会门票
  • 做优化网站简单描述什么是网络营销
  • python做简单网站手机网站作用
  • 基于jsp网站开发制作WordPress主题自适应