思路:使用全排列函数,{0,1,2,3}共24种情况.
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3, "Ofast", "inline")
#define SIS std::ios::sync_with_stdio(false),std::cin.tie(nullptr);
#include "bits/stdc++.h"
#define ll long long
using namespace std;
char s[4] = {'0','1','2','3'};
char c[55][55];
void slove() {
int n, m;
int sx, sy, ex, ey;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
if (c[i][j] == 'S') {
sx = i;
sy = j;
}
}
}
string cc;
cin >> cc;
int ans = 0;
do
{
int x = sx;
int y = sy;
for (int i = 0; i < cc.size(); i++) {
if (cc[i] == s[0]) x++;
else if (cc[i] == s[1]) y--;
else if (cc[i] == s[2]) x--;
else if (cc[i] == s[3]) y++;
if (c[x][y] == '#' || x<1 || y<1 || x>n || y>m) break;
else if (c[x][y]=='E') {
ans++;
break;
}
}
} while (next_permutation(s, s + 4));//全排列函数
cout << ans << endl;
}
int main() {
SIS
int t = 1;
while (t--)
slove();
return 0;
}