昨天学习了KMP算法,它的用处为在一个文本串S内查找一个模式串P的出现位置,它基于原来暴力的思想改变,保持i不回溯,通过修改j的位置,让模式串尽可能移动到有效的位置。此外,还借助了CSDN了解了模式串匹配的新算法:BM算法,是从模式串的尾部开始匹配,且时间复杂度为O(N)。此外,还有一个字符串查找算法中最快的一种:Sunday算法,跟BM相似,只不过是从前往后匹配,并且他关注的是参加匹配的最末位字符的下一位字符,由于这种算法每一步移动量都较大,所以效率很高。
然后,又看了最小表示法,主要是将一个给定的字符串不断把它的最后一个字符放到开头,得到的n个字符串中最小的一个,即为字符串S 的最小表示法。
最后,又看了字典树和哈夫曼树的一点皮毛。总而言之,这一部分的数据结构我没有看的十分面面俱到,首先只是了解了他们的原理,然后又看了几个例题,回来还要再详细地看一遍。
晚上总体的情况,除了C,D题比较难,题意很难读懂,也不知道咋做之外,A,B题还是挺好做的,B题要想到枚举x会超时,所以要改变思路S(x),另外需注意的是:我在codeblock写的可以编译通过,但在vjude上却编译错误,难道是vjude的编译容错性太差,上次出现在了pow函数需返回double类型,需强制转换才能编译成功,所以我昨天成功的猜到了是sqrt的也必须是double类型,所以也强制转换了一下,结果对啦,好吧,以后注意。
今天又是好好看书学数据结构的一天,加油。