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;
}

运行结果如下:

相关文章
|
6月前
|
算法
Hierholzer算法dfs找欧拉回路模板
Hierholzer算法dfs找欧拉回路模板
69 0
|
6月前
【每日一题Day241】LC1254统计封闭岛屿的数目 | dfs
【每日一题Day241】LC1254统计封闭岛屿的数目 | dfs
45 1
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
<<算法很美>>——(七)——DFS典题(一):水洼数目
|
机器人
【动态规划篇】路径总数&&最小路径和
【动态规划篇】路径总数&&最小路径和
【动态规划篇】路径总数&&最小路径和
|
人工智能 算法 Windows
背包问题求方案数(二)
AcWing算法提高课内容,本文讲解 动态规划
201 0
背包问题求方案数(二)
|
算法
背包问题求方案数(一)
AcWing算法提高课内容,本文讲解 动态规划
149 0
背包问题求方案数(一)
|
测试技术
输出全排列 (20 分)(dfs模板题)
输出全排列 (20 分)(dfs模板题)
106 0
L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(dfs)
L2-016 愿天下有情人都是失散多年的兄妹 (25 分)(dfs)
123 0
7-121 深入虎穴 (25 分)(dfs,bfs)
7-121 深入虎穴 (25 分)(dfs,bfs)
162 0