[水题]HDOJ1020

来源:互联网 发布:迅雷看看优化版 编辑:程序博客网 时间:2024/06/09 15:06

http://acm.hdu.edu.cn/showproblem.php?pid=1020

这道题是个普通的枚举,条理清晰就没问题
如下这段代码,用太多if else就会造成超时

#include <stdio.h>#include <string.h>int main(){    int N,i,n,j;    char a[1001];    int count=1;    while (scanf ("%d",&N)!=EOF)    {        for (j=0;j<N;j++){        scanf ("%s",a);        n=strlen(a);          for (i=1;i<n;i++)          if (a[i]==a[i-1]){            count++;            if (i==n-1)            printf ("%d%c",count,a[i]);}          else {            if (count==1)            printf ("%c",a[i-1]);            else            printf ("%d%c",count,a[i-1]);              count=1;            if (i==n-1)            printf ("%c",a[i]);            count=1;}        printf ("\n");         count=1;           }    }    return 0;}

正确的代码

#include <cstdio>#include <string.h>int main(){    int t;    char str[10001];    scanf("%d",&t);    while(t--){        scanf("%s",str);        int count=1;        for(int i=0;i<strlen(str);i++){            if(str[i]==str[i+1])count++;            else{                if(count==1) printf("%c",str[i]);                else printf("%d%c",count,str[i]);                count=1;            }        }        printf("\n");    }}
0 0
原创粉丝点击