萌新求救,本机过了,提交0分

P1320 压缩技术(续集版)

haoyun1 @ 2020-08-04 21:34:46

#include<cstdio>
#include<iostream>
int a[300];
int main(){
    int n=0,m=0,x=0;
    bool p=0;
    char c=getchar();
    while (c!='\n'){
        m++;
        if (c==p+48) x++; else{
            p=!p;
            a[++a[0]]=x;
            x=1;
        }
        c=getchar();
    }
    n=m;m=0;
    printf("%d ",n);
    for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
    for (int i=2;i<=n;i++){
        for (int j=1;j<=n;j++){
            c=getchar();
            if (c==p+48) x++; else{
                p=!p;
                printf("%d ",x);
                x=1;
            }
        }
        c=getchar();
    }
    printf("%d",x);
}

第一组数据

11111 00100 11111 00100 11111

5 0 5 2 1 2 5 2 1 2 5


by haoyun1 @ 2020-08-04 21:44:12

把判换行符改了改,还有加了把多余字符读了就过了

#include<cstdio>
#include<iostream>
int a[300];
int main(){
    int n=0,m=0,x=0;
    bool p=0;
    char c=getchar();
    while (c>=48&&c<=49){//这里做了更改
        m++;
        if (c==p+48) x++; else{
            p=!p;
            a[++a[0]]=x;
            x=1;
        }
        c=getchar();
    }
    n=m;m=0;
    printf("%d ",n);
    for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
    for (int i=2;i<=n;i++){
        while(c<48||c>49) c=getchar();//这里把多余字符读了
        for (int j=1;j<=n;j++){
            if (c==p+48) x++; else{
                p=!p;
                printf("%d ",x);
                x=1;
            }
            c=getchar();
        }
    }
    printf("%d",x);
}

by 老子是北瓜 @ 2020-08-04 21:44:45

自 救


by x_miracle @ 2020-08-05 16:27:10

@haoyun1

把'\n'改成'\r'也可以过

#include<cstdio>
#include<iostream>
int a[300];
int main(){
    int n=0,m=0,x=0;
    bool p=0;
    char c=getchar();
    while (c!='\r'){//这里做了更改
        m++;
        if (c==p+48) x++; else{
            p=!p;
            a[++a[0]]=x;
            x=1;
        }
        c=getchar();
    }
    n=m;m=0;
    printf("%d ",n);
    for (int i=1;i<=a[0];i++) printf("%d ",a[i]);
    for (int i=2;i<=n;i++){
        while(c<48||c>49) c=getchar();
        for (int j=1;j<=n;j++){
            if (c==p+48) x++; else{
                p=!p;
                printf("%d ",x);
                x=1;
            }
            c=getchar();
        }
    }
    printf("%d",x);
}

by haoyun1 @ 2020-08-05 16:48:17

所以是系统不同换行符不同导致的问题??


by IT小白 @ 2020-08-13 10:56:18

@x_miracle 感谢大佬的见解,我也是这个问题,把'\n'换成'\r'就过了


by ld2002 @ 2021-01-13 13:35:39

@x_miracle 我的换成\r也不可以


|