#define N 10
void search(bool edge[N][N], int n, int cur, int end, vector<int> &route,
vector<int> &result) {
if (cur == end) {
if (result.empty() || route.size() < result.size()) {
result = route;
}
return;
} else {
for (int i = 0; i < n; ++i) {
if (edge[cur][i]
&& (find(route.begin(), route.end(), i) == route.end())) {
route.push_back(i);
search(edge, n, i, end, route, result);
route.pop_back();
}
}
}
}
vector<int> findFastRoute() {
int n = 5; //实际结点数
bool edge[N][N]; //点间是否连接
init(edge);
vector<int> tmp;
vector<int> result;
int start = 0;
int end = n - 2;
tmp.push_back(start);
search(edge, n, start, end, tmp, result);
return result;
}给定两个站点,如果没有直达的路线,如何找到换乘次数最少的路线?
最新推荐文章于 2021-02-27 02:53:06 发布
本文介绍了一种寻找从起点到终点最短路径的算法实现。通过递归搜索的方式遍历所有可能的路径,并记录下最短的有效路径。该算法适用于小型图,能够有效地找出两点之间的最快路线。

33

被折叠的 条评论
为什么被折叠?



