下面展示一些 内联代码片
。
参考源码
#include <iostream>
#include <string>
#include <queue>
using namespace std;
const int MAXV = 12; // 最多有12个景点
string vertex[MAXV] = { "入口", "魔法城堡", "小熊维尼冒险世界", "明日世界", "神秘岛", "美国小镇", "海洋时代", "古埃及", "梦幻世界", "探险世界", "水上王国", "动物王国" };
int distance[MAXV][MAXV] = {
{ 0, 100, 150, -1, -1, -1, 200, -1, -1, -1, -1, -1 },
{ 100, 0, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 150, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ -1, 100, -1, 0, 200, -1, -1, 300, -1, -1, -1, -1 },
{ -1, -1, -1, 200, 0, 100, -1, -1, -1, -1, -1, -1 },
{ -1, -1, -1, -1, 100, 0, -1, -1, -1, -1, -1, -1 },
{ 200, -1, -1, -1, -1, -1, 0, 50, -1, -1, -1, -1 },
{ -1, -1, -1, 300, -1, -1, 50, 0, 100, -1, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, 100, 0, 150, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, 150, 0, 100, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, 0, 200 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, 0 }
};
void PrintMap() // 输出景点分布图
{
cout << "景点分布图:" << endl;
for (int i = 0; i < MAXV; i++) {
for (int j = 0; j < MAXV; j++) {
if (::distance[i][j] != -1 && i < j) {
cout << vertex[i] << "--" << ::distance[i][j] << "--" << vertex[j] << endl;
}
}
}
}
bool visited[MAXV]; // 标记是否已经访问过
void DFS(int v) // 深度优先搜索
{
visited[v] = true;
cout << vertex[v] << endl;
for (int i = 0; i < MAXV; i++) {
if (::distance[v][i] != -1 && !visited[i]) {
DFS(i);
}
}
}
void PrintAllVertexByDFS() // 输出所有景点信息
{
cout << "深度优先搜索遍历结果:" << endl;
for (int i = 0; i < MAXV; i++) {
visited[i] = false;
}
DFS(0); // 从入口开始遍历
}
void BFS(int v) // 广度优先搜索
{
queue<int> q;
q.push(v);
visited[v] = true;
while (!q.empty()) {
int cur = q.front();
q.pop();
cout << vertex[cur] << endl;
for (int i = 0; i < MAXV; i++) {
if (::distance[cur][i] != -1 && !visited[i]) {
q.push(i);
visited[i] = true;
}
}
}