【算法】图的应用--城市之间需要转的机数
来源:互联网 发布:云办公平台源码 编辑:程序博客网 时间:2024/06/12 23:06
关于图的最大的应用就是遍历的时候求最优的解法:
上图表示一共有5个城市(城市编号为1~5),7表示有7条航线,1表示起点城市,5表示目标城市。
接下来就是每一个城市到另外的城市的航线。
假设要从1城市到5城市,那么需要转机的最下的次数是:两次,即1-3,3-5。
接下来用代码来实现一下:
#define _CRT_SECURE_NO_DEPRECATE#include<stdio.h>#include<stdlib.h>struct Note{int x;int s;};int main(){struct Note que[2501];int e[51][51] = { 0 }, book[51] = { 0 };int head, tail;int i, j, n, m, a, b, cur, start, end, flag = 0;printf("请输入城市的个数->\n");scanf("%d", &n);printf("请输入各城市间线路的个数->\n");scanf("%d", &m);printf("请输入起始地点->\n");scanf("%d", &start);printf("请输入结束地点->\n");scanf("%d", &end);for (i = 1; i <= n; i++){for (j = 1; j <= n; j++){if (i == j){e[i][j] = 0;}else{e[i][j] = 99999999;}}}printf("请输入各城市间的线路->\n");for (i = 1; i <= m; i++){scanf("%d %d", &a, &b);e[a][b] = 1; e[b][a] = 1;}head = 1;tail = 1;que[tail].x = start;que[tail].s = 0;tail++;book[1] = start;while (head < tail){cur = que[head].x;for (j = 1; j <= n; j++){if (e[cur][j] != 99999999 && book[j] == 0){que[tail].x = j;que[tail].s = que[head].s + 1;tail++;book[j] = 1;}if (que[tail].x == end){flag = 1;break;}}if (flag == 1){break;}head++;}printf("从%d地点到%d地点转最少机数是", start, end);printf("%d", que[tail - 1].s);printf("\n");system("pause");return 0;}运行的结果:
阅读全文
0 0
- 【算法】图的应用--城市之间需要转的机数
- 智慧城市需要的核心技术:
- 【算法】图的应用之求两个城市间的最短路径--FloydWarshall算法
- 城市模型的LOD算法
- c/c++常用算法(15) -- 经典数据结构(城市之间的最短距离问题)
- 关于QQ等级需要小时数引发的算法联想
- java十进制数与各进制之间的转换规则与算法
- 转--城市的烦恼
- 使用二分法猜1到100之间的一个数最多需要几次猜对
- 做应用的需要
- 城市云脑是互联网云脑的节点,城市云脑之间的互补与支撑
- 2014华为机试——两个城市之间的最多路径
- 趣味算法-城市之间最短总距离
- 趣味算法-城市之间最短路径
- 求城市里两点之间的最短距离.
- java面试题之 城市之间路段的问题
- 最小生成树(城市之间的最短距离)
- echarts地图中城市与省份之间的切换
- java反射
- 网页中嵌套图片的输出格式说明
- 面试 42-1:翻转单词顺序
- asp 指定读取某篇文章
- c语言中.c与.h文件详解
- 【算法】图的应用--城市之间需要转的机数
- u-boot第二阶段分析(三)
- Python接口自动化测试框架httpautotest
- Linux 下安装 numpy 和 scipy
- Java中日期时间格式与毫秒数的相互转换
- ubuntu异常关机后导致分辨率变化(降低)
- C++自定义数据类型的转换
- LeetCode
- 单链表