杭电 ACM 1020 题 一直wrong answer

#include<stdio.h>#include<string.h>intmain(){intline=0;scanf("%d",&line);while(line--... #include <stdio.h>
#include <string.h>
int main()
{
int line = 0;
scanf("%d", &line);
while(line--)
{
char shuru[10000] = {'0'};
int num = 1;
fflush(stdin);
gets(shuru);
char tmp = shuru[0];
for(int i=1; i<=strlen(shuru); i++)
{
if( tmp == shuru[i])
{
num++;
}
else
{
if(num >1)
{
printf("%d%c", num, tmp);
num = 1;
}
else
{
printf("%c", tmp);
}
}
tmp = shuru[i];
}
printf("\n");
}
return 0;
}
展开
 我来答
宁小哥的分享
2013-05-04 · TA获得超过273个赞
知道小有建树答主
回答量:228
采纳率:0%
帮助的人:311万
展开全部

这个是很水的题,但是你的code还是反应了一些你的问题,如果去面试,就会有不好的印象,忠言逆耳啊。我改的有注释,改你的测试结果15ms AC(一次结果,这个时间可能不是稳定的)


#include <stdio.h>

#include <string.h>

int main()

{

int line = 0;


scanf("%d", &line);

getchar();

while(line--)

{

char shuru[10004] = {0};//原来为何要在while里面申请数组数据?,初始化为何要字符‘0’,不是0 ,输入1个字符需要2个空间,最后要个0, 1004是4字节对齐。这些细节都是效率问题

int num = 1;

// fflush(stdin);ACM里面一般不清除文件缓冲区

gets(shuru);

char tmp = shuru[0];

int len=strlen(shuru);

for(int i=1; i<=len; i++)

{

if( tmp ==  shuru[i])

{

num++;

}

else

{

if(num >1)

{

printf("%d%c", num, tmp);

num = 1;

}

else

{

printf("%c", tmp);

}

}

tmp = shuru[i];

}

printf("\n");

}

return 0;

}



下面这个简洁点的代码多次测试都是0ms,感谢"释放_Eric"的code参考。


参考:编程中国风

#include<stdio.h>
#include<string.h>
void main()
{
    char f[10004];
    int n,i,j,k,sum;
    scanf("%d",&n);
    getchar();//防止输出第一个空行
    while(n--)
    {
        gets(f);
        k=strlen(f);//一次get防止多次调用浪费时间,
        for(i=0;i<k;)
        {   
            sum=1;
            for(j=i+1;j<=k;j++)
            {
                if(f[i]==f[j])
                    sum++;
                else
                {   if(sum==1)
                    {
                        printf("%c",f[i]);i=j;
                    }
                else
                {
                    printf("%d%c",sum,f[i]);i=j;
                }
                break;
                }
            }
        }
        printf("\n");
    }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式