美团9/2面试题 DFS回溯走迷宫

m*n迷宫,在任意指定的格子x,y出发,只能走l步,打印所有可能的走法。不允许走已经走过的格子

典型的DFS搜索问题

#include <iostream>
using namespace std;
int main() {
    //int a;
    //cin >> a;
    cout << "Hello World!" << endl;
}
const int dx[] = {1,0,0,-1};
const int dy[] = {0,1,-1,0};
bool visited[M][N];

vector<vector<pair<int,int>> res;

void dfs(int x, int y, int count,vector<pair<int,int>> path){
    if(count==L){
        res.push_back(path);
        //path.clear();
    }
    visited[x][y] = true;
    path.push_back({x,y});
    for(int i=0;i<4;i++){
        int a = x+dx[i];
        int b = y+dy[i];
        if(a>=0&&a<n&&b>=0&&b<n&&!visited[a][b]) dfs(a,b,count+1, path);
    }
    visited[x][y] = false;
    path.pop_back();
}

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/108359397