我有一个包含交叉口(ID 安全名称)和街道(Intersection1 Intersection2 距离)的数据文件,如图所示:
INTERSECTIONS:
198 0.8 alvemon and 28th
199 0.6 alvemon and 29th
200 0.8 alvemon and 30th
STREETS:
1 2 0.6
2 3 0.1
3 4 0.9
交叉点是顶点,街道是边。这是我的标题: 顶点标题:
#ifndef VERTEX_H
#define VERTEX_H
#include<list>
#include<string>
#include "global.h"
struct Vertex_{
int xsect;
double danger;
std::string xstreets;
std::list<Edge> EdgeList;
/*struct Vertex_ *next;
struct Vertex_ *prev;*/
};
#endif
边缘标题:
#ifndef EDGE_H
#define EDGE_H
#include "global.h"
#include "vertex.h"
struct Edge_{
Vertex *adjvertex;
double distance;
/*struct edge *next;
struct edge *prev;*/
};
#endif
我正在用列表制作图表。我已经完成了所有设置,并且制作了街道/十字路口的图表(或地图)。由于以下要求,我知道我需要使用深度优先搜索,但不确定如何实现。如果有人能给我一个深度优先搜索的例子,那就太好了。现在我的任务需要我:
慢跑路径要求
safejogger 程序应搜索提供的图形以找到满足以下要求的慢跑路径: 路径必须在用户指定的起始交点指示的同一交叉点(即顶点)处开始和结束。该路径不应重新访问任何交叉路口。换句话说,任何顶点都不应该在路径中出现两次。路径的总距离应在用户指定距离目标的 1 英里范围内。
慢跑路径安全
safejogger 程序应该计算慢跑路径的两个统计数据,包括: 平均路径安全:慢跑路径内所有交叉口的平均安全指数。最小路径安全:慢跑路径内所有路口的最小安全指数。