问题标题: 各位大神,酷町堂题目1171 最大连续组长度(long)怎么做?

0
0
已解决
李汉魁
李汉魁
中级光能
中级光能

http://judge.codingtang.com/problem/1171/

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int n,h=1,zs=1;
    cin>>n;
    char a[255];
    char zf=a[0];
    for (int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    for (int j=0; j<n; j++)
    {
        if (a[j]==a[j+1]) h++;
        else if (h>zs)
        {
            zs=h;
            zf=a[j];
            h=1;
        }
    }
    cout<<zs<<endl;
    cout<<zf<<endl;
    return 0;
}

为何只有60分?小人菜鸟一枚,望各位大神指点!

李汉魁在2018-01-29 10:07:10追加了内容


http://judge.codingtang.com/problem/1171/

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
    int n,h=1,zs=1;
    cin>>n;
    char a[255];
    char zf=a[0];
    for (int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    for (int j=0; j<n; j++)
    {
        if (a[j]==a[j+1]) h++;
        else if (h>zs)
        {
            zs=h;
            zf=a[j];
            h=1;
        }
    }
    cout<<zs<<endl;
    cout<<zf<<endl;
    return 0;
}

为何只有60分?小人菜鸟一枚,望各位大神指点!


0
已采纳
王子凡
王子凡
高级光能
高级光能
for (i=0;i<s.size();i++)
    {
        num=1;
        while (s[i]==s[i+1])
        {
            num++;
            i++;
        }
        if (num>max)
        {
            max=num;
            f=s[i];
        }
    }

核心代码

0
栾峻岩
栾峻岩
初级天翼
初级天翼
 for (int j=0; j<n; j++)

应该是j<n-1;

0
张睿杰
张睿杰
初级天翼
初级天翼
for (int j=0; j<n; j++)

如果j到n,那么j+1就没值了

0
0
颜咏春
颜咏春
中级光能
中级光能
 for (int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    for (int i=0; i<n+1; i++)
    {

        if (a[i]==a[i+1])
        {
            h++;
            if (h>zs)
            {
                zs=h;
                zf=a[i];
            }
        }
        else
            h=1;
0
臧启亚
臧启亚
初级光能
初级光能

核心代码如下

for (int i=0; i<n; i++)
        cin>>a[i];
    for (j=0; j<n-1; j++)
    {
        if (a[j]==a[j+1]) h++;
        else if (h>zs)
        {
            zs=h;
            zf=a[j];
            h=1;
        }
    }
    if(a[j]==a[n]) h++;
    else if (h>zs)
    {
        zs=h;
        zf=a[j];
        h=1;
    }
    cout<<zs<<endl;
    cout<<zf<<endl;

 

0
时梓繁
时梓繁
修练者
修练者
int n,h=1,zs=1;
    cin>>n;
    char a[255];
    char zf=a[0];
    for (int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    for (int i=0; i<n+1; i++)
    {

        if (a[i]==a[i+1])
        {
            h++;
            if (h>zs)
            {
                zs=h;
                zf=a[i];
            }
        }
        else
            h=1;
    }
    cout<<zs<<endl;
    cout<<zf<<endl;
0
陆姗姗
陆姗姗
资深守护
资深守护
for (int j=0; j<n; j++)
{
    if (a[j]==a[j+1]) h++;
    else if (h>zs)      //你写的这里只有当a[j]!=a[j+1]并且h>zs的时候h才被赋值为1,但实际上只要a[j]!=a[j+1]时就需要h=1;
    {
         zs=h;
         zf=a[j];
         h=1;
    }
}

这里的elseif需要改成else里嵌套if

我要回答