目的地路径的最短来源
我正在尝试找到从源到达目的地所需的最小步骤数。为此,我正在使用图形遍历的BFS算法。我认为我已经为BFS算法应用了正确的逻辑,但是当无法从源头达到目标节点时,我没有得到正确的答案。可以,任何人检查我在代码中做错了什么。
int shortestDistance(int N, int M, vector<vector<int>> A, int X, int Y) {
vector<vector<int>>visited(N, vector<int>(M, 0));
visited[0][0] = 1;
queue<pair<int, int>>qe;
pair<int, int>pr;
pr.first = 0;
pr.second = 0;
qe.push(pr);
queue<int>count;
count.push(0);
while(!qe.empty()){
pair<int, int>pr1 = qe.front();
qe.pop();
int a = pr1.first;
int b = pr1.second;
int cnt = count.front();
count.pop();
if(a == X && b == Y){
return cnt;
}
if(a-1 >= 0 && A[a][b] == 1 && visited[a-1][b] == 0){
visited[a-1][b] = 1;
pair<int, int>pr2;
pr2.first = a-1;
pr2.second = b;
qe.push(pr2);
count.push(cnt+1);
}
if(a+1 < N && A[a][b] == 1 && visited[a+1][b] == 0){
visited[a+1][b] = 1;
pair<int, int>pr2;
pr2.first = a+1;
pr2.second = b;
qe.push(pr2);
count.push(cnt+1);
}
if(b-1 >= 0 && A[a][b] == 1 && visited[a][b-1] == 0){
visited[a][b-1] = 1;
pair<int, int>pr2;
pr2.first = a;
pr2.second = b-1;
qe.push(pr2);
count.push(cnt+1);
}
if(b+1 < M && A[a][b] == 1 && visited[a][b+1] == 0){
visited[a][b+1] = 1;
pair<int, int>pr2;
pr2.first = a;
pr2.second = b+1;
qe.push(pr2);
count.push(cnt+1);
}
}
return -1;
}
}
I am trying to find the minimum number of steps required to reach to the destination from the source. For this, I am using BFS algorithm of graph traversal. I think I have applied the correct logic for BFS algorithm but I am not getting the correct answer when the destination node cannot be reached from source. Can, anyone check what I have done wrong in the code.
int shortestDistance(int N, int M, vector<vector<int>> A, int X, int Y) {
vector<vector<int>>visited(N, vector<int>(M, 0));
visited[0][0] = 1;
queue<pair<int, int>>qe;
pair<int, int>pr;
pr.first = 0;
pr.second = 0;
qe.push(pr);
queue<int>count;
count.push(0);
while(!qe.empty()){
pair<int, int>pr1 = qe.front();
qe.pop();
int a = pr1.first;
int b = pr1.second;
int cnt = count.front();
count.pop();
if(a == X && b == Y){
return cnt;
}
if(a-1 >= 0 && A[a][b] == 1 && visited[a-1][b] == 0){
visited[a-1][b] = 1;
pair<int, int>pr2;
pr2.first = a-1;
pr2.second = b;
qe.push(pr2);
count.push(cnt+1);
}
if(a+1 < N && A[a][b] == 1 && visited[a+1][b] == 0){
visited[a+1][b] = 1;
pair<int, int>pr2;
pr2.first = a+1;
pr2.second = b;
qe.push(pr2);
count.push(cnt+1);
}
if(b-1 >= 0 && A[a][b] == 1 && visited[a][b-1] == 0){
visited[a][b-1] = 1;
pair<int, int>pr2;
pr2.first = a;
pr2.second = b-1;
qe.push(pr2);
count.push(cnt+1);
}
if(b+1 < M && A[a][b] == 1 && visited[a][b+1] == 0){
visited[a][b+1] = 1;
pair<int, int>pr2;
pr2.first = a;
pr2.second = b+1;
qe.push(pr2);
count.push(cnt+1);
}
}
return -1;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论