把0-3数字代表的方向枚举,判断是否符合题意
#include <bits/stdc++.h>
using namespace std;
int n,m;
char ch[55][55];
string str;
int bx,by;
//int dp[4][2] = {{-1,0},{1,0},{0,1},{0,-1}};
int nxt[4] = {0,1,2,3};
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> ch[i][j];
if(ch[i][j] == 'S'){
bx = i; by = j;
}
}
}
cin >> str;
// nxt 上下左右
int ans = 0;
do {
int x = bx,y = by;
for (int i = 0; i < str.size(); i++) {
int t = nxt[str[i] - '0'];
if(t == 0){
y++;
}else if(t == 1){
y--;
}else if(t == 2){
x--;
}else x++;
if(x < 0 || x >= n || y < 0 || y >= m) break;
if(ch[x][y] == 'E'){
ans++;break;
}
if(ch[x][y] == '#'){
break;
}
}
} while (next_permutation(nxt,nxt+4));
cout << ans << endl;
return 0;
}