题解 | #迷宫问题#

迷宫问题

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

#include<iostream>
#include<vector>
using namespace std;
int n,m;
vector<vector<int>>maze;

vector<vector<int>>best_path;
vector<vector<int>>temp_path;
void dfs(int i,int j)
{
    if(i<0|i>=n||j<0||j>=m||maze[i][j]==1)
    {
        return;
    }
    maze[i][j]=1;
    temp_path.push_back({i,j});
    if(i==n-1&&j==m-1)
    {
        best_path=temp_path;
    }
    dfs(i-1,j);
    dfs(i+1,j);
    dfs(i,j-1);
    dfs(i,j+1);
    maze[i][j]=0;
    temp_path.pop_back();
}
int main()
{
    while(cin>>n>>m)
    {
        maze=vector<vector<int>>(n,vector<int>(m,0));
        best_path.clear();
        temp_path.clear();
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                cin>>maze[i][j];
            }
        }
        dfs(0,0);
        for(int i=0;i<best_path.size();i++)
        {
            vector<int>v=best_path.at(i);
            cout<<'('<<best_path[i][0]<<','<<best_path[i][1]<<')'<<endl;
        }
    }
    return 0;
}
全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务