#include<cstdio>
#include<iostream>
//理解错了题意,不是第二次触碰板子小车就炸了,而是可以继续走,只是导向板不起作用了
using namespace std;
char a[105][105];//char与int分清
int main(){
int n,m,x,y;
char c;
scanf("%d%d%d%d",&n,&m,&x,&y);
//清空缓存区
// cin.sync(); 超时
//fflush(stdin); 超时
while ((c = getchar()) != '\n');
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%c",&a[i][j]);
}
while ((c = getchar()) != '\n');
// cin.sync();
//fflush(stdin);
}
int num=0;
int before=0;
//for(int i=1;i<=n*m;i++) 有可能在里面转圈
while((x>=1&&x<=n)&&(y>=1&&y<=m)){
//记录前一个状态要想好顺序.
//走过就打一个标记,下次再走的时候就没有改变方向的效果了
if(a[x][y]!=before&&a[x][y]!='E'){
num++;
}
if(a[x][y]=='E'){
//重复上一个回合的操作
a[x][y]=before;
}
before=a[x][y];
if(a[x][y]=='U'){
a[x][y]='E';
x=x-1;
}else if(a[x][y]=='D'){
a[x][y]='E';
x=x+1;
}else if(a[x][y]=='L'){
a[x][y]='E';
y=y-1;
}else if(a[x][y]=='R'){
a[x][y]='E';
y=y+1;//有重复必可简化
}
}
printf("%d",num-1); //因为第一次肯定是由无到有,会使num+1.
return 0;
}
个人感觉困单的点:理解错误,以为第二次经过便直接结束,其实还会按上一次的方向继续走下去.
还有就是每走过一次就要打一个标记