题目链接
题目梗概
给出一个单词矩阵,将矩阵中的所有”yizhong“标记出来,“yizhong”的排列方向有八个,即以y为中心起点向(上,右上,右,右下,下,左下,左,左上)排列。
输出时,除“yizhong”之外的字符都输出为*。
解题思路
找到起点y,然后以y为中心,分别判断八个方向上的单词是否为“yizhong”即可。
函数功能
- search(dr, dc, r, c);
为简化代码,写了该函数,可以搜索判断指定方向上的单词。
参数 r, c 代表搜索起点坐标,即y的坐标。
参数dr, dc 代表搜索方向,也是搜索过程中,行列坐标的变化量。
例如,当向上搜索时,行坐标保持不变,列坐标依次递减,所以dr = -1, dc = 0;
当向左下搜索是,行坐标依次递增,列坐标依次递减,所以dr = 1,dc = -1;
在搜索前,先判断一下该方向上的字符数是否有7个("yizhong"7个字符)。如果够,则进行搜素。
搜索完成后,如果该方向上的字符串是“yizhong”则对这些字符位置进行标记,方便最后输出。
完整代码
#include <iostream>
using namespace std;
char d[100][100];
int v[100][100];
string s = "yizhong";
int n;
void search(int dr, int dc, int r, int c){
bool flag = true;
if(r + 6 * dr <