【发布时间】:2020-06-03 02:34:55
【问题描述】:
#include <iostream>
#include <string>
#include <queue>
using namespace std;
void BFS(const string&, const string[], int[][10]);
int main()
{
const int CAP = 10;
string states[CAP] = { "Arizona", "California", "Idaho", "Nevada", "Oregon", "Utah", "Washington" };
string Point;
int matrix[CAP][CAP] =
{
{0,1,0,1,0,1,0},
{1,0,0,1,1,0,0},
{0,0,0,1,1,1,1},
{0,1,1,1,0,0,1},
{1,1,1,1,0,0,0},
{0,0,1,0,1,0,0},
{0,0,1,0,1,0,0}
};
BFS("California", states, matrix);
}
void BFS(const string& Point, const string states[], int matrix[][10])
{
int SPoint = 0;
queue<string> visited;
queue<string> Queue;
string temp = Point;
visited.push(temp);
do
{
for (int i = 0; i < 10; i++)
{
if (states[i] == temp)
{
SPoint = i;
}
}
for (int i = 0; i < 10; i++)
{
if (matrix[SPoint][i] == 1)
{
Queue.push(states[i]);
}
}
visited.push(Queue.front());
Queue.pop();
temp = visited.back();
} while (!Queue.empty());
for (int i = 0; i < 10; i++)
{
cout << visited.front();
visited.pop();
}
}
我正在做一个练习,我必须创建一个执行广度优先搜索并打印出访问路径的函数。但我的功能不会打印任何东西。我在这里做错了什么?
注意:矩阵按字母顺序排列,表示状态之间的联系。
我的预期输出:加利福尼亚 亚利桑那 俄勒冈 内华达 犹他 爱达荷 华盛顿
【问题讨论】:
-
您的“预期输出”似乎有七个值。从应该只包含 7 个值的队列中删除 10 个值,您期望会发生什么?
标签: c++ matrix graph nodes breadth-first-search