选的B题
第二阶段思路:点击进入
第一阶段赛题下载:https://www.lanzous.com/i3vnsvg
建立了两个模型,一个字典搜寻算法选择模型,一个算法优化模型。
问题假设
- 1.假设文本随机生成
- 2.假设构成文字的20个字母为a~t
- 3.假设替换错误只出现片段的首尾,因此我们搜寻的片段长度就为11~21之间
模型准备
- 使用C++随机数引擎与分布类型生成文本,每段长度随机5000~8000。
- 调整文本(随机生成的文本找到11~21个字母相同的基本没有)
选择模型
- 使用了BF,动态规划,KMP三种方法,直接跑程序搜寻相同字符串,搜寻结果保存为txt文件,同时记录运行时间,占用内存,资源使用量,初步比较效率。
- 选择改变每段文本长度,再次记录上面三个记录,统计制表做附件,绘图插论文,使用MATLAB拟合数据,得到方程式,绘制方程式相关三维图像。
- 比较得出KMP为最优算法。
优化模型
- 优化KMP的next数组,字符不匹配时,next数组会出现character[i]=character[next[i-1]];的迭代查询,使用next[i]=next[next[i-1]];归并相同数据。
- 再次选择第一个模型的测试文本,测试程序的运行时间与占用内存,与传统KMP算法比较。
程序时间大概也就是100秒~200秒左右,占用内存好像是150MB~300MB左右。
方法很简单,思路也比较清晰,但这道题难点在于模型和相关方程式的建立,这道题附件我们给的倒是挺多,附录就给了核心代码。
关注我的公众号,发送“2019认证杯代码”,获取相关代码
有问题可以加我QQ:1024593536
作者:Hk_Mayfly
博客园:https://www.cnblogs.com/Mayfly-nymph/
个人博客:hkmayfly.com
CSDN:https://blog.csdn.net/qq_39542714
如果你觉得博客对你有帮助的话,可以给博主一个(づ ̄3 ̄)づ╭❤~赞或者关注,谢谢!
博主目前大部分写作在博客园,欢迎大家来访,( ̄︶ ̄)↗也欢迎爱好写作的朋友和我交换友链。
附注:不支持转载!欢迎大家加我QQ,互相交流。Biubiubiu~顺便来关注我的公众号:Star Bottle叭!,哈哈哈!