问题标题: 酷町堂:1462

0
0
已解决
刘景程
刘景程
新手光能
新手光能
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string p;
    cin>>p;
    int i,a[26],max=-1,index;
    memset(a,0,sizeof(a));
    for(i=0;i<p.size();++i)
        a[p[i]-'a']++;
    for(i=0;i<26;++i)
        if(a[i]!=0&&a[i]>max)
            {
                index=i;
                max=a[i];
            }
        cout<<(char)(index+'a')<<" "<<max;
 } 

我哪错了???????????????????

总是90

第七个测试点错了!!!!!!!!!!

刘景程在2018-03-28 20:41:58追加了内容

你能把第7个测试点的数据告诉我吗


0
已采纳
马佳滢
马佳滢
新手天翼
新手天翼

我来告诉你为什么错了(我没有看出来你的错误在哪里

比如说,输入"awwa",你是输出"a"还是"w"?当然是a!

因为如有多个频次相同的字母,取在字符串中最先出现的字母

是"a"先出现还是"w"先出现?"a"呀.

可是问题来了,照你的算法写(我们来写个流程)

首先,记a次数的计数器记录一次,(+1)max=1;

接着,记w次数的计数器记录一次,又记录一次(+2)max=2;

a次数的计数器又记录一次,(+1)这时a次数的计数器也是2,可是ta等于max的值啊?

于是你输出的就是"w 2",第七个测试点就这样错了

0
马佳滢
马佳滢
新手天翼
新手天翼
memset(a,0,sizeof(a));

这是干哈啊?

(我第7个测试点就是"awwa"问题呢!)

0
我要回答