博客
关于我
String- 单词方阵
阅读量:548 次
发布时间:2019-03-09

本文共 853 字,大约阅读时间需要 2 分钟。

技术员编写的代码解析:

在给定的C代码中,我们可以看到它是一个用于二维字符匹配的程序。这个程序的主要功能是读取一个方阵的大小n,然后读取n个长度为n的字符串,并在其中找到字符串"yizhong"的所有起始位置,并将这些位置标记在book数组中。最终程序会输出标记和未标记的字符。

程序的核心是machining函数,它尝试在给定的位置(x, y)周围寻找"yizhong"的匹配。假设我们已经正确初始化了数组和函数,那么程序可以正常工作。现在我们从输入处理到输出处理的流程进行解析。

程序首先读取方阵的大小n,并处理回车符。接着,读取n个字符串,并将它们存储在二维数组a中。然后,使用一个char数组c存储"yizhong"。

接下来,程序使用book数组记录起始点和与之相连的"yizhong"字符的位置。通过遍历每一个字符(i, j),如果字符等于c[0],即'y',则调用machining函数。

在machining函数中,我们想要找到从(i, j)开始的"yizhong"。我们需要使用一个数组next来表示8个方向。对于每一个方向,我们沿着方向移动6步,并检查每一步的字符是否与c数组中的对应字符匹配。如果在移动6步过程中遇到字符不匹配或越界,则提前退出循环。

如果我们能够移动6步并且字符全部匹配,那么说明在(i, j)处存在"yizhong"。此时,我们需要标记起始点(i, j)以及接下来的6个字符位置到book数组中,以表示这些字符都是"yizhong"的部分。

在编写程序时要注意数组索引的问题,因为n可能会很大,但是在这个例子中,n的大小 limit 被正确处理。在输出阶段,我们检查book数组是否标记并输出相应的字符或星号。

虽然程序看起来正确,但需要注意数组越界的情况,并确保所有的字符都被正确处理。另外,在主函数中,我们调用machining函数的次数需要控制好,否则会导致性能问题。

总结来说,这段代码完成了一个简单的二维字符匹配任务,不过可以优化代码结构和错误处理部分。

转载地址:http://vvzsz.baihongyu.com/

你可能感兴趣的文章
poj3061 Subsequence(尺取法)
查看>>
poj3074 DLX精确覆盖
查看>>
poj3252(组合数)
查看>>
Qt笔记——QToolBox开发简易QQ聊天界面
查看>>
poj3307
查看>>
Qt笔记——QString与隐式共享、MVC架构
查看>>
Qt笔记——QSemaphore处理生产者/消费者模式
查看>>
Qt笔记——QMutex&QWaitCondition处理生产者消费者模式
查看>>
Qt笔记——QLable+QPixmap图片缩放踩坑
查看>>
Qt笔记——foreach与forever
查看>>
QT程序怎么挪到Linux下,linux+Qt程序如何打包发布
查看>>
Qt知识:视图框架QGraphicsWidget详解
查看>>
SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
查看>>
Qt知识: 画刷风格
查看>>
QT的OpenGL渲染窗QOpenGLWidget Class
查看>>
QT的C++程序加载动态链接库DLL(Linux下是so)的方式
查看>>
QT界面操作1:如何跟踪鼠标位置?
查看>>
Qt环境搭建(Visual Studio)
查看>>
QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)...
查看>>
QT样式表——url路径
查看>>