計蒜客走迷宮
阿新 • • 發佈:2019-01-14
#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; }