文章
21
粉丝
0
获赞
19
访问
3.9k
#include<bits/stdc++.h>
using namespace std;
int n, m;
vector<string> matrix, ans;
bool flag = false;
string s = "hello";
// 方向矩阵
int dir[2][8] = {{0, 0, 1, 1, 1, -1, -1, -1},
{1, -1, 0, 1, -1, 0, 1, -1}};
void bfs(int i, int j, int d,int k){
if(k == 5){ // 等到最后一个都匹配后再记录
flag = true;
return;
}
// 边界和不匹配返回
if(i < 0 || i >= n || j < 0 || j >= m || matrix[i][j] != s[k])
return;
bfs(i + dir[0][d], j + dir[1][d], d, k + 1);
if(flag) ans[i][j] = s[k]; //
};
int main(){
cin >> n >> m;
ans.resize(n, string(m, '*'));
matrix.resize(n);
for(int i = 0; i < n; i++)
cin >> matrix[i];
//-------------------------------
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(matrix[i][j] == 'h')
for(int d = 0; d < 8; d++){
bfs(i, j, d, 0);
flag = false; // 重置
}
}
}
// 输出
for(int i = 0; i < n; i++)
cout << ans[i]...
登录后发布评论
暂无评论,来抢沙发