STL || HDU 1894 String Compare

如果一个词包含再另一个词的前面(前缀),是一对前缀,求一共有多少对
*解法:STL万岁
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;
#define SZ 50010
string a[SZ];
int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int n, ans = 0;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            cin >> a[i];
        sort(a, a + n);
        for(int i = 0; i < n - 1; i++)
        {
            for(int j = i + 1; j < n; j++)
            {
                if(a[i].size() == a[j].size()) break;
                if(a[i].compare(0, a[i].size(), a[j], 0, a[i].size()) == 0) ans++;
            }
        }
        if(ans > 11519) ans = ans % 11519;
        printf("%d\n", ans);
    }
    return 0;
}

 

posted @ 2018-02-03 18:40  舒羽倾  阅读(109)  评论(0编辑  收藏  举报