From 1356432e7b12b4527e7343536e027e330cba4bea Mon Sep 17 00:00:00 2001 From: 130****8197 <2224020130@stu.hutb.edu.cn> Date: Tue, 2 Jan 2024 06:28:53 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E9=A1=BA=E5=BA=8F?= =?UTF-8?q?=E4=B8=B2=E7=9A=84=E5=90=84=E7=A7=8D=E6=A8=A1=E5=BC=8F=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E7=AE=97=E6=B3=95exp4=5F3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...205\215\347\256\227\346\263\225exp4_3.cpp" | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 "2224020130/chapter4/\345\256\236\347\216\260\351\241\272\345\272\217\344\270\262\347\232\204\345\220\204\347\247\215\346\250\241\345\274\217\345\214\271\351\205\215\347\256\227\346\263\225exp4_3.cpp" diff --git "a/2224020130/chapter4/\345\256\236\347\216\260\351\241\272\345\272\217\344\270\262\347\232\204\345\220\204\347\247\215\346\250\241\345\274\217\345\214\271\351\205\215\347\256\227\346\263\225exp4_3.cpp" "b/2224020130/chapter4/\345\256\236\347\216\260\351\241\272\345\272\217\344\270\262\347\232\204\345\220\204\347\247\215\346\250\241\345\274\217\345\214\271\351\205\215\347\256\227\346\263\225exp4_3.cpp" new file mode 100644 index 00000000..1dfd8afc --- /dev/null +++ "b/2224020130/chapter4/\345\256\236\347\216\260\351\241\272\345\272\217\344\270\262\347\232\204\345\220\204\347\247\215\346\250\241\345\274\217\345\214\271\351\205\215\347\256\227\346\263\225exp4_3.cpp" @@ -0,0 +1,234 @@ +#include +#define MaxSize 100 +typedef struct +{ + char data[MaxSize]; + int length; +} SqString; +void StrAssign(SqString &s,char cstr[]) +{ + int i; + for (i=0;cstr[i]!='\0';i++) + s.data[i]=cstr[i]; + s.length=i; +} +void DestroyStr(SqString &s) +{ } + +void StrCopy(SqString &s,SqString t) +{ + for (int i=0;is.length || j<0 || i+j-1>s.length) + return str; + for (k=i-1;ks1.length+1) + return str; + for (j=0;js.length || i+j>s.length+1) + return str; + for (k=0;ks.length || i+j-1>s.length) + return str; + for (k=0;k0) + { for (int i=0;i=t.length) + return(i-t.length); + else + return(-1); +} +void GetNext(SqString t,int next[]) +{ int j,k; + j=0;k=-1;next[0]=-1; + while (j=t.length) + return(i-t.length); + else + return(-1); +} +void GetNextval(SqString t,int nextval[]) +{ + int j=0,k=-1; + nextval[0]=-1; + while (j=t.length) + return(i-t.length); + else + return(-1); +} + +int main() +{ + int j; + int next[MaxSize],nextval[MaxSize]; + SqString s,t; + StrAssign(s,"abcabcdabcdeabcdefabcdefg"); + StrAssign(t,"abcdeabcdefab"); + printf("串s:");DispStr(s); + printf("串t:");DispStr(t); + printf("简单匹配算法:\n"); + printf(" t在s中的位置=%d\n",Index(s,t)); + GetNext(t,next); + GetNextval(t,nextval); + printf(" j "); + for (j=0;j Date: Tue, 2 Jan 2024 07:12:18 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B1=82=E4=B8=80=E4=B8=AA=E4=B8=B2?= =?UTF-8?q?=E4=B8=AD=E5=87=BA=E7=8E=B0=E7=AC=AC=E4=B8=80=E4=B8=AA=E6=9C=80?= =?UTF-8?q?=E9=95=BF=E9=87=8D=E5=A4=8D=E5=AD=90=E4=B8=B2exp4-5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...244\215\345\255\220\344\270\262exp4_5.cpp" | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 "2224020130/chapter4/\346\261\202\344\270\200\344\270\252\344\270\262\344\270\255\345\207\272\347\216\260\347\254\254\344\270\200\344\270\252\346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\344\270\262exp4_5.cpp" diff --git "a/2224020130/chapter4/\346\261\202\344\270\200\344\270\252\344\270\262\344\270\255\345\207\272\347\216\260\347\254\254\344\270\200\344\270\252\346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\344\270\262exp4_5.cpp" "b/2224020130/chapter4/\346\261\202\344\270\200\344\270\252\344\270\262\344\270\255\345\207\272\347\216\260\347\254\254\344\270\200\344\270\252\346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\344\270\262exp4_5.cpp" new file mode 100644 index 00000000..e00bb9a0 --- /dev/null +++ "b/2224020130/chapter4/\346\261\202\344\270\200\344\270\252\344\270\262\344\270\255\345\207\272\347\216\260\347\254\254\344\270\200\344\270\252\346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\344\270\262exp4_5.cpp" @@ -0,0 +1,166 @@ +#include +#include +#define MaxSize 100 +typedef struct +{ + char data[MaxSize]; + int length; +} SqString; +void StrAssign(SqString &s,char cstr[]) +{ + int i; + for (i=0;cstr[i]!='\0';i++) + s.data[i]=cstr[i]; + s.length=i; +} +void DestroyStr(SqString &s) +{ } + +void StrCopy(SqString &s,SqString t) +{ + for (int i=0;is.length || j<0 || i+j-1>s.length) + return str; + for (k=i-1;ks1.length+1) + return str; + for (j=0;js.length || i+j>s.length+1) + return str; + for (k=0;ks.length || i+j-1>s.length) + return str; + for (k=0;k0) + { for (int i=0;ilength) + { + index=i; + length=length1; + } + j+=length1; + } + else j++; + } + i++; + } + subs=(SqString *)malloc(sizeof(SqString)); + subs->length=length; + for (i=0;idata[i]=s.data[index+i]; + return subs; +} +int main() +{ + char str[MaxSize]; + SqString s,*subs; + printf("输入串:"); + scanf("%s",str);//测试集{aababcabdabccde} + StrAssign(s,str); + subs=MaxSubstr(s); + printf("求最长重复子串:\n"); + printf(" 原串:"); + DispStr(s); + printf(" 最长重复子串:"); + DispStr(*subs); + DestroyStr(s); free(subs); + return 1; +} \ No newline at end of file -- Gitee