#include<iostream> using namespace std; char maze[100][100]; bool flag[100][100]; int dx[]={0,0,1,-1}; int dy[]={1,-1,0,0}; int m,n; int sum=0; void dfs(int x,int y) { if(maze[x][y]=='T'){sum++;return ;} for(int i=0;i<4;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(flag[nx][ny]==0&&maze[nx][ny]=='*'||maze[nx][ny]=='T'&&nx>0&&ny>0&&nx<m+1&&ny<n+1)//逗比死了||写成了&&结果错到死 { flag[nx][ny]=1; dfs(nx,ny); flag[nx][ny]=0; } } } int main() { while(cin>>m>>n){ memset(maze,0,sizeof(maze)); memset(flag,0,sizeof(flag)); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>maze[i][j]; flag[1][1]=1; dfs(1,1); cout<<sum<<endl; } }
原文地址:http://blog.csdn.net/u013497977/article/details/41892525