这一章跟之前的学的相比,对我来说显更加困难,先是KMP我还没来得及全部吃透,又来了个稀疏矩阵。
下面是我写模式匹配时的代码,我个人觉得自己最弱的部分就是主函数前的准备工作,写的不够仔细,总是有小错误,比如,没有返回值啊,符号用错啊,下标和位置区分不开。
#include<iostream> #include<string.h> using namespace std ; string s; string t; int ssize; int tsize; int next1[2000000]; void nextsz(string t,int tsize) { next1[0] = -1; int k = -1; int j = 0 ; while(j < tsize-1) { if(k==-1||t[j]==t[k]) { ++k; ++j; next1[j] = k; } else k = next1[k]; } } int kmp(string s,string t,int sszie,int tsize) { int j = 0; int i = 0; while(i<ssize&&j<tsize) { if(j==-1||s[i]==t[j]) { i++;//匹配整体向前移; j++; } else { j = next1[j]; } } if(j==tsize) { return i-j+1;//返回模式串在主串的第一个下标; } else return 0; }
主函数,这个部分是我能够流畅写下的,一般不会有什么大问题。
int main() { cin>>s; cin>>t; ssize = s.size(); tsize = t.size(); nextsz(t,tsize); cout<<kmp(s,t,ssize,tsize)<<endl; }
然后就是稀疏矩阵的实践题。一开始也有点迷茫,不知道怎么下手,后面上网重新理了一下稀疏矩阵的思路之后,终于可以下手了。
图片来自百度。
另外我想额外讲一下这周上机的时候老师跟我们一起完成 的那道AI的题目,就是从跟着老师一起打代码,好像对这个过程有不一样的体会,自己一些不确定的思路和可能会犯的错误,老师一讲就基本上能够解决,这是我觉得很神奇的一点,就好像有一种BUFF一样,跟着老师的思路一走,我也发现了我平时写代码一些不足的地方,老师是一部分一部分的解决的,但我总想着一下子就解决,这样反而容易思路受限。
总结:上周定下的打代码任务完成度不够,只是完成了作业最后的代码题,没有再多练习一下别的,然后希望能够在期末考之前,把每种算法都总结一下,然后附上相关的练习题,这是我的目标。
原文地址:https://www.cnblogs.com/Lnnnn/p/10706002.html
时间: 2024-10-22 04:37:47