[计蒜客(蓝桥杯省赛)]走迷宫

题目来源 计蒜客程序设计竞赛基础课(蓝桥杯省赛)

算法标签 dfs,bfs,搜索

题目描述

在这里插入图片描述

思路

暴力搜索,直接用dfs走完。

for(int i=1;i<=n;i++)scanf("%s",&g[i]);这里的字符串读入似乎有问题,搞得我排错排了半天。
每次递归都要清空st状态判断数组,这里靠回溯。

题目代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<iostream>

using namespace std;

int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
const int N=500;
char g[N][N];
bool st[N][N];
int n,m,ans;

void dfs(int x,int y)
{
  if(g[x][y]=='T'){ans++;return;}
  
  st[x][y]=true;
  for(int i=0;i<4;i++)
  {
    int tx=x+dx[i],ty=y+dy[i];
    if(tx<1||ty<1||tx>n||ty>m)continue;
    if(g[tx][ty]=='#')continue;
    if(st[tx][ty])continue;
    
    dfs(tx,ty);
  }
  st[x][y]=false;
}
int main()
{ 
  cin>>n>>m;
  int x=0,y=0;
  
  for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
	  cin>>g[i][j];
      if(g[i][j]=='S')
        x=i,y=j;
    }

  dfs(x,y);
  cout<<ans;
  return 0;
}
发布了180 篇原创文章 · 获赞 19 · 访问量 5769

猜你喜欢

转载自blog.csdn.net/weixin_43910320/article/details/105355802
今日推荐