第四章学习小结
本章主要学习的是串和数组,首先是串的模式匹配算法,著名的匹配算法有BF算法和KMP算法,其中BF算法粗暴简单,时间复杂度为O(m*n);KMP算法较为复杂,时间复杂度为O(m+n)。老师以病毒感染检测的案例,让我大概明白了模式匹配,所以作业的串与模式匹配算法相对简单,我用的是BF算法,(KMP算法我还没来得及想...)代码如下:
#include <iostream> #include <string> using namespace std; int Index_BF(string s, string t)//BF算法 { int i,j; i=0; j=0; while(i<s.length() && j<t.length()) { if(s[i]==t[j]) { ++i; ++j; } else { i=i-j+1; j=0; } } if(j==t.length()) return i-t.length()+1; else return 0; } int main() { string s,t;//String就是C++中的字符串,用双引号引起来的几个字符 cin>>s>>t; cout<<Index_BF(s,t); }
然后是稀疏矩阵,这个矩阵在书上只有一句话...所以我在网上查阅了资料,借鉴了一下大佬博主的图解(生动又形象!),博客链接:https://blog.csdn.net/qq_35733751/article/details/80843589,开始时一头雾水,
,
然后感谢大佬的指点,我才明白是我只定义了结构体,没有任何的输出(可见我C++基础的扎实程度...)
最后是最难的(我认为)AI核心代码,老师上课讲了个大概,着重讲了数组越界问题,因此我在做的时候没有出现差错,在分隔符方面用ASCII码(我总是想不到这方面)
can you代码如下:
然后我学习了一下getchar(),getchar有一个int型的返回值。当程序调用getchar时.程序就等着用户按键。用户输入的字符被存放在键盘缓冲区, m=getchar(),需包含#include<string>中。直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCII码, m=getchar(),需包含#include<string>。
总的来说,感觉这周学习效果不错,上个目标没有实现...(一直在啃QWQ),这周的新目标我想把上周的测验再总结,然后KMP算法和稀疏矩阵的十字链表我想查阅一下,并试试能不能独立写出来。