c语言的字符串编程题,c语言字符串编程练习题 布满荆棘的人生 2022-10-14 14:55 198阅读 0赞 字符串,数组 1.题意: 找出原串中出现超过2次的子串的数目,每个子串出现多次时不可重叠。 分析: 枚举子串的长度len,找到满足连续的height\[i\]>=len的最左端 l 和最右端的位置 r,如果r-l>=len说明子串没有重叠。 \#include \#include \#include using namespace std; const int maxn = 1005; int N; char s\[maxn\]; int sa\[maxn\],t\[maxn\],t2\[maxn\],c\[maxn\]; void suffix\_sa(int n, int m) \{ int i, \*x=t, \*y=t2; for (i=0; i for (i=0; i for (i=0; i for (i=n-1; i>=0; i--) sa\[--c\[x\[i\]\]\] = i; for (int k=1; k<=n; k<<=1) \{ int p = 0; for (i=n-k; i for (i=0; i= k) y\[p++\] = sa\[i\]-k; for (i=0; i for (i=0; i
还没有评论,来说两句吧...