zoukankan      html  css  js  c++  java
  • 迷宫

    思路:

    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;
    }
  • 相关阅读:
    用css实现三角形
    css实现加载中的效果
    图片轮播图插件
    支付密码框
    angular里面ng-class的几个用法
    Redis数据恢复
    Jenkins简单介绍
    spring框架中定时器的配置及应用
    springMVC与freemarker的整合
    freemarker入门小例子
  • 原文地址:https://www.cnblogs.com/yfr2zaz/p/10566648.html
Copyright © 2011-2022 走看看