题解 | #迷宫问题#

迷宫问题

http://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

#include<iostream>
#include<vector>

using namespace std;
int m, n;
vector<vector<int>> mi;
vector<vector<int>> now_path;
vector<vector<int>> best_path;

void dfs(int i, int j)
{
    if(i < 0 || i >= n|| j < 0|| j>=m || mi[i][j] == 1)
    {
        return;
    }
    mi[i][j] = 1;
    now_path.push_back({i, j});
    if(i == n-1 && j == m-1)//先填进去在判断,不然会漏掉最后的一个位置
    {
        best_path = now_path;
    }
    
    dfs(i-1,j);
    dfs(i+1,j);
    dfs(i,j-1);
    dfs(i,j+1);
    mi[i][j] = 0;
    now_path.pop_back();
}

int main()
{
   
    while(cin>>n>>m)
    {
        mi = vector<vector<int>>(n,vector<int>(m,0));//必须初始化!!!!
        best_path.clear();
        now_path.clear();
        for(int i = 0; i < n;i++)
        {
            for(int j = 0; j < m;j++)
            {
                cin>>mi[i][j];
            }
        }
        dfs(0 ,0);
        for(vector<vector<int>>::iterator it = best_path.begin();it != best_path.end();it++)//写法学一下
        {
            cout<<'('<<(*it)[0]<<','<<(*it)[1]<<')'<<endl;
        }
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务