广度优先搜索两个字符串

时间:2016-04-20 16:34:52

标签: c++ string breadth-first-search

我尝试在给定两个字符串时创建深度优先搜索算法。我已经构建了我的图表但是我遇到了广度优先搜索算法的问题。我不完全确定我应该从我的哈希函数中得到的int a和int b应该怎么做。

上下文.... 顶点节点的名称为ex。约翰和一组字符串,这些是约翰是朋友的其他名字的列表。我在主要的前两个名字。约翰和玛丽,我想打印出连接这两个名字的路径。我只有整数BFS的代码,这就是为什么我有点困惑。任何帮助将不胜感激。

 struct vertex_node {
            string name;
            set <string> edges;
 };

 void Graph::paths(string start, string end)

{

bool visited[capacity];
    for(int i=0; i<capacity; i++){
        visited[i]=false;
    }

queue <string> q;

int a = hash_string(start) % capacity;
int b = hash_string(end) % capacity;

visited[a]=true;

q.push(start);
visited[a]=true;

while(!q.empty()){
    start = q.front();
    cout << start << " ";
    q.pop();

    for(int i=0;i < courses->get_capacity(); i++){
        for(std:: set<string> :: iterator j = list[]->edges.begin();
        j !=list[i]->edges.end(); j++){
        if(!visited[*j]){
             visited[*j] = true;
             q.push(*j);
        }
    }
}

}

1 个答案:

答案 0 :(得分:0)

     for(std:: set<string> :: iterator j = list[i]->edges.begin();
         j !=list[i]->edges.end(); j++){
         if(!visited[a]){
             visited[a] = true;
             q.push(end);
         }
     }

在这里,你通过迭代器list[i]遍历j,但你从不关心j。您只是多次确认访问了start(通过查看!visited[a]

相关问题