输出从(0,0)到(n,m)的所有路径

#include<iostream>
#include <vector>
//在3x3迷宫中寻找从S(0,0)到E(2,2)的所有路径
using namespace std;
vector<pair<int,int>> path;//存储路径坐标
bool v[3][3]={false};//标记已访问位置
int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//四个方向
void dfs(int x,int y){
    //1:终止条件 
    if(x==2&&y==2){
        for(auto a:path){
            cout<<"("<<a.first<<","<<a.second<<")"; 
        }
        cout<<endl;
        return;
    }
    //2.循环所有条件
    for(auto b:d){
        int nx=x+b[0],ny=y+b[1];
        if(nx>=0&&nx<=2&&ny>=0&&ny<=2&&v[nx][ny]!=true){
            v[nx][ny]=true;
            path.push_back({nx,ny});
            dfs(nx,ny);
            //3.回溯
            path.pop_back();
            v[nx][ny]=false;
        }
    }
}
int main(){
    path.push_back({0,0});
    v[0][0]=true;
    dfs(0,0);
    return 0;
}

 

posted @ 2025-04-19 09:57  王一行(小号)  阅读(9)  评论(0)    收藏  举报