链接

这一题是一道关于字符串比较的题目,题目简单来说就是找到一对l,r。使得 字符串在[l,r]中相同字符的对数除以(r-l+1)最大。

这一题并不难,但开始写的时候我的脑子wa了。用爆搜过了一半的测试点。

正确操作是 用一个i变量控制边界,j变量控制有边界。用一个数组统计字符出现的次数,如果该字符第一次出现不予理会,如果之前存在过,则加上该字符之前存在的数量。最后更新一下最大值。

用字符的数量更新对数,确实没想到。orz。

代码内容

for(int i=0;i<n;i++)
    {
        double res = 0.0;
        vector<int> alls(500,0);
        alls[str[i]]++;
        for(int j=i+1;j<n;j++)
        {
            if(alls[str[j]] != 0) res +=alls[str[j]];
            alls[str[j]]++;
            ans = max(ans,(double)res / (j-i+1));
        }
    }