M应该是2000 * 26 还是2000 ?
查看原帖
M应该是2000 * 26 还是2000 ?
1403184
Lin_ZZ123楼主2024/10/23 20:52
#include<iostream>
using namespace std;
const int N = 85, M = 2010;

int idx, e[M][26], cnt[M], n, mx;
char str[N];

int insert(char str[]) //插入一个字符串, 同时记录其中包含子串的个数
{
    int x = 0, l = 1;
    for (int i = 0; str[i]; i++)
    {
        int u = str[i] - 'a';
        if (!e[x][u]) //不存在
            e[x][u] = ++idx;
        x = e[x][u];  l += cnt[x];
    }
    cnt[x]++;
    return l;
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> str;
        mx = max(mx, insert(str));
        //cout << mx << endl;
    }
    cout << mx;
    return 0;
}


2024/10/23 20:52
加载中...