第四章学习小结
一、本章内容的小结
二、心得体会
1.完成作业题模式匹配时,一开始用了BF算法(时间复杂度为O(n*m),然后最后一个测试点过不了的原因就是数据规模比较大了导致运行超时。然后改用了KPM算法(确实听起来容易打起来难,琢磨了很久才把next函数的实现搞明白,如果匹配的函数实现从下标为0开始的话,next函数要注意下标的问题)
2.实践1-还是求交集,我是利用读入的集合元素作为数组下标的方法,有一个问题就是该元素的值可以大于限制的数据个数(10^6),所以如果只是申请一个长度为10^6的数组的话,会出现段错误(越界访问)。所以我申请成10^7,虽然这样比较占用空间,但是想不到其他修改方案了。(也想过调用已有的排序函数,再按之前取非降序集合的交集的方法来做,不过没有尝试,不知道可不可行)
3.实践2-大炮打蚊子,这道题目自己开打前先是进行了用什么结构存放输入的蚊子分布位置以及存放的方式、以什么情况作为消灭的蚊子的标志、边界该怎么处理等的思考,我觉得自己的思路是可以的,结果在几个点出了错(没考虑一炮击中半死目标的情况)感谢cxn同学帮我找出错误(利用num计算每轮消灭蚊子个数后,num要重新置0,以及最大M、N为20时,对应是数组行下标列下标最大应该是19不是20)
4..讨论:这次讨论最大的问题就是对string、char和char*的理解与区分。本地运行后输不出结过,刚好小组同学也有这个疑问,我们进行了很久的讨论以及在网上查找资料,有一些小收获,但是还是不是很理解到底底层是怎么处理的,所以向老师请教,很感谢老师花了挺长时间找资料、做总结,为大家解答疑惑。(比心.jpg)
(1)若有:string s; //string 类的默认构造函数会生成一个空串,长度为 0 这种情况下对 s 的任何下标访问都是错误的,但是编译器没有进行检查。
(2)不能把‘