int x, y;int xx[8]={1,0,-1,0};//横向位移int yy[8]={0,1,0,-1};//纵向位移for(int i =0; i <4;++i){int tx = x + xx[i];//计算能到达的点横坐标int ty = y + yy[i];//计算能到达的点纵坐标//做一些处理}
AC警告:
#include<bits/stdc++.h>
using namespace std;char amap[12][12];int sx, sy, ans, n, m;int to[4][2]={{1,0},{0,1},{-1,0},{0,-1}};voiddfs(int x,int y){if(amap[x][y]=='T'){
ans++;return;}
amap[x][y]='#';for(int i =0; i <4; i++){if((x + to[i][0]>=0)&&(y + to[i][1]>=0)&&(x + to[i][0]< n)&&(y + to[i][1]< m)&&(amap[x + to[i][0]][y + to[i][1]]!='#'))dfs(x + to[i][0], y + to[i][1]);}
amap[x][y]='.';return;}intmain(){
cin>>n>>m;getchar();for(int i =0; i < n;++i){for(int j =0; j < m;++j){char c =getchar();if(c =='S'){
sx = i;
sy = j;}
amap[i][j]= c;}getchar();}
ans =0;dfs(sx,sy);
cout<<ans<<endl;return0;}