计蒜客走迷宫

#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
char a[11][11];
int b[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
int vis[11][11];
int sum=0;
void dfs(int x,int y)
{
	if(a[x][y]=='T')
    {
		sum++;
		return;
	}
	vis[x][y]=1;
	for(int i=0;i<4;i++)
	{
		int xx=x+b[i][0];
		int yy=y+b[i][1];
		if((xx>=0&&xx<n)&&(yy>=0&&yy<m)&&a[xx][yy]!='#'&&vis[xx][yy]==0)
		{
			dfs(xx,yy);
		}
	}
	vis[x][y]=0;//取消访问标记
		
}

int main()
{

	cin>>n>>m;
	int x,y;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j]=='S')
			{
				dfs(i,j);
			}
		}
	}
	cout<<sum<<endl;
	return 0;	
}


猜你喜欢

转载自blog.csdn.net/weixin_39903708/article/details/86135721