标签:-- length eof malloc int clu while info 数组
首先是模式串匹配:
#include<iostream> #include<stdlib.h> using namespace std; #define maxn 1000000 struct str { char *ch; int length; }a,b; int lower(str a, str b) { int i=1,j=1; int k=0; while(i<=a.length&&j<=b.length) { if(a.ch[i]==b.ch[j]) { i++; j++; } else { i=++k; j=1; } } if(j>b.length) return k; else return 0; } int main() { cin>>a.length; a.ch=(char*)malloc((a.length+1)*sizeof(char)); for(int i=1;i<=a.length;i++) cin>>a.ch[i]; cin>>b.length; b.ch=(char*)malloc((b.length+1)*sizeof(char)); for(int i=1;i<=5;i++) cin>>b.ch[i]; if(lower(a,b)!=0) cout<< lower(a, b)<<endl; else cout<<"no match"<<endl; free(a.ch); free(b.ch); return 0; }
malloc :
数组=(类型*)malloc(数组大小*sizeof(类型));
free(数组);
例如:
a.ch=(char*)malloc((a.length+1)*sizeof(char));
free(b.ch);
为什么不用2个for。然后不匹配break呢?
因为更好改kmp,而且更防止老师眼睛一累以为你瞎搞,批错了了。
然后 这个算法的复杂度是o(m^n);
我们需要一个更快的算法——kmp
我们来看一个例子:例子别的博主那里偷一下吧。没时间自己画图。哈哈哈
标签:-- length eof malloc int clu while info 数组
原文地址:https://www.cnblogs.com/2014slx/p/11105833.html