DFS
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e3 + 5;
const int INF = 0x3f3f3f3f;
char g[N][N];
int vis[N][N];
int n, m ,ans;
int dx[] = {0,0,-1,1};
int dy[] = {1,-1,0,0};
string s = "tencent";
void dfs(int x,int y,int c) {
if(x < 1 || x > n || y < 1 || y > m) return;
if(g[x][y] != s[c]) return;
if(c == 6 && g[x][y] == s[6]) {
ans++;
return;
}
for(int i = 0;i < 4;i++){
int x1 = x + dx[i];int y1 = y + dy[i];
if(vis[x1][y1]) continue;
vis[x1][y1] = 1;
dfs(x1,y1,c + 1);
vis[x1][y1] = 0;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++)
cin >> g[i][j];
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(g[i][j] == 't')
dfs(i,j,0);
}
}
cout << ans << endl;
return 0;
}
0 回复
0 转发
0 喜欢
1 阅读



