第四章总结

Posted linyulan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四章总结相关的知识,希望对你有一定的参考价值。

一、病毒匹配这个程序主要就在三个函数

技术图片

第一个比较简单,想方设法把下标01开始,

于是,就用了strcat 的方法,在主串和模式串的前面加个任意字符的。

但是在vs 的时候出现了一个内存不足的问题?

技术图片

 

于是把这个改成了如图所示 strcat_s, 编译没有问题了,但是在pta 上面会显示编译错误。

当变成原来的就又成功了。。。但是在vs上无法成功,

 技术图片

存在异常??是什么东西??

这个问题还没有解决。

 

第二个函数就是得到next[ ] 的值,这个很难搞懂,搞懂了也不会自己打,还是看着书来的,自己写的注释也不知道对不对,不知道理解有没有问题。

但是总觉得模模糊糊,乱七八糟的。反正主要目的是找到最长相同前后缀,经过看了好几次某同学的博客终于大概理解了一点。

 技术图片

第三个函数是kmp 算法,据我理解应该就是比较主串的i 位置与模式串的j 位置是否相同,与BF算法不同的是,KMP回溯的是模式串的j ,j = next[ j ],容易理解。

 

BF算法是比较容易理解的,遇到不相同的就将主串的i 回溯到之前的下一个继续匹配,但是很浪费时间,其时间复杂度为n*m;

 KMP的是m+n; 

 

这是本次通过写这道题得出的一些小看法。

 

二、稀疏矩阵

(非零元素比较多)

主要就是这个三元组

typedef struct {
    int i; //
    int j; //
    int value; //
}node;    //三元组

typedef struct {
    int m; //
    int n; //
    int cnt; //非零个数
    node a[500];//三元组
}matrix;

matrix m;

 

三、AI核心代码

虽然是老师手把手交的,但还是又很多问题出现。

int main()
{
 int n;
string s;
cin>> n;
getchar();  //吸收回车<cstdio>
for(i=0;i<n;i++)
{ 
   getline(cin,s);
   cout<<s<<endl;
   cout<<"AI:";
   go(s); //根据s 输出AI

}
return 0;

}

void go(string s ){  //根据s输出AI;下面写关于AI的要求
     string t;//新字符串
     int i,j;  //i定位到s 的第一个非空
    for(i=0; s[i]!=&& s==  ; ++i) //当全为空格时,字符串最后一个是回车会转化成,不会发成溢出
    j=0;   //新字符串里的下标
    
    while (s[i[!=){  //把s 串copy 到t 串 ,但连续空格只copy一个
    if (s[i] ==   &&s[i-1] ==   )//空格前面是否非空
    {
    ++i;
    continue;
    }
    if(s[i++]==? ){
    t[j++]=!;
    continue;
}
    if(s[i] !=I)
        t[j++] = tolower(s[i++])  //如果
    
    else
    t[j++] = s[[i++];  //
    
}

     t[j] =  ;  //因为之前j++已经加一;
    cout<< t<< endl;
}

emmm总之其实不是很会写,大部分根据其他人的博客然后勉勉强强写了。

 

 

后来还提到

string s
跟 getline (cin,s)匹配;

char s[1001] 与 cin.getline()匹配;

以上是关于第四章总结的主要内容,如果未能解决你的问题,请参考以下文章

《Python数据分析与挖掘实战》第四章案例代码总结与修改分析

第四章总结

BootStrap有用代码片段(持续总结)

深入理解DOM节点类型第四篇——文档片段节点DocumentFragment

BootStrap实用代码片段(持续总结)

回归 | js实用代码片段的封装与总结(持续更新中...)