DFS:迷宫解的方案数

简介: DFS:迷宫解的方案数

题目描述:


       蒜头君是一个玩迷宫的高手,天下还没有能难住他的迷宫。但是总有人喜欢刁难蒜头君,不停的给蒜头君出难题。这个出题的人很聪明,他知道天下还没有能难住蒜头君的迷宫。


       所以他便转换思维问蒜头君,在不走重复路径的情况下,总共有多少不同可以到达终点的路径呢?蒜头君稍加思索便给出了答案,你要不要也来挑战一下?


输入格式


第一行输入两个整数 n(1≤n≤11), mm(1≤m≤11),表示迷宫的行和列。


然后有一个n×m 的地图,地图由’.’、’#’、‘s’、‘e’这四个部分组成。’.‘表示可以通行的路,’#'表示迷宫的墙,'s’表示起始点,'e’表示终点。


输出格式


输出一个整数,表示从’s’到达’e’的所有方案数。


样例输入


5 5


s####


.####


.####


.####


…e..


样例输出


1

#include <iostream>
using namespace std;
string a[105]; 
bool b[105][105];
int n,m;
void dfs(int x,int y){
  if(x<0 || x>=n || y<0 || y>=m || a[x][y]=='.' || b[x][y]){
    return;
  }
  b[x][y]=true;
  dfs(x-1,y);
  dfs(x,y-1);
  dfs(x+1,y);
  dfs(x,y+1);
}
int main(){
  int number=0;
  cin>>n>>m;
  for(int i=0;i<n;i++){
    cin>>a[i];
  }
  for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
      if(a[i][j]=='#' && !b[i][j]){
        dfs(i,j);
        number++;
      }
    }
  }
  cout<<number<<endl;
  return 0;
}

运行结果如下:

相关文章
|
7月前
|
算法
Hierholzer算法dfs找欧拉回路模板
Hierholzer算法dfs找欧拉回路模板
78 0
|
7月前
【每日一题Day305】LC1448统计二叉树中好节点的数目 | dfs
【每日一题Day305】LC1448统计二叉树中好节点的数目 | dfs
44 0
|
7月前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
35 0
|
7月前
|
算法 前端开发
前端算法-岛屿的最大面积-DFS(深度优先搜索)
前端算法-岛屿的最大面积-DFS(深度优先搜索)
32 0
|
7月前
【每日一题Day241】LC1254统计封闭岛屿的数目 | dfs
【每日一题Day241】LC1254统计封闭岛屿的数目 | dfs
50 1
|
算法 测试技术 C#
C++深度优先搜索(DFS)算法的应用:树中可以形成回文的路径数
C++深度优先搜索(DFS)算法的应用:树中可以形成回文的路径数
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
|
算法
正整数n不同分解式的个数(DFS)
正整数n不同分解式的个数(DFS)
221 0