迷宫

思路:

dfs不断递归

1:如果走过重复的路,则无法出去

2:如果出去则成功

#include<iostream>
#include<iomanip> 
#include<cstring>
using namespace std;
string data[10];
int ans;
int vis[10][10];
bool solve(int i,int j){
    if(i<0||i>9||j<0||j>9)
    return true;//跑出矩阵成功出去 
    if(vis[i][j]==1)
    return false;//有重复的路径则无法出去,进入死循环 
    vis[i][j]=1;//标记走过的位置 
    switch(data[i][j]){
        case 'U'://进行移动 
            return solve(i-1,j);
        case 'D':
            return solve(i+1,j);
        case 'L':
            return solve(i,j-1);
        case 'R':
            return solve(i,j+1);
        default:
            return false;
    }
} 
int main(int argc,const char *argv[]){
    data[0]="UDDLUULRUL";
    data[1]="UURLLLRRRU";
    data[2]="RRUURLDLRD";
    data[3]="RUDDDDUUUU";
    data[4]="URUDLLRRUU";
    data[5]="DURLRLDLRL";
    data[6]="ULLURLLRDU";
    data[7]="RDLULLRDDD";
    data[8]="UUDDUDUDLL";
    data[9]="ULRDLUURRR";
    for(int i=0;i<10;i++){//对每一个人dfs 
        for(int j=0;j<10;j++){
            memset(vis,0,sizeof(vis));//清零轨迹 
            bool res=solve(i,j);//dfs判断是否可以出去 
            if(res)
            ans++;
        }
        
    }
    cout<<ans<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/yfr2zaz/p/10566648.html