文章

21

粉丝

0

获赞

19

访问

4.7k

头像
矩阵单词查找与替换 题解:C++
P5383 四川大学2025年机试题
发布于2026年3月27日 16:19
阅读数 226

#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]...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发