c语言,本地可以,但洛谷全WA,求大佬解惑。

P1320 压缩技术(续集版)

TheLoner @ 2022-08-18 14:41:25

#include <stdio.h>

int main(){

    char ju[40000];
    int a=0,i,x='0',y=0,p=0,sum;
    for (i=0;;i++){
        scanf("%c",&ju[i]);
        if (ju[i]!='\n'){
           a++;
        }else{
           break;
        }
    }
    sum=a*(a+1)-1;
    for (i=a;i<sum;i++){
        scanf("%c",&ju[i]);
    }
    printf("%d ",a);
    for (i=0;i<sum;i++){
        if(ju[i]==x){
        y++;
    }else if(ju[i]=='\n'||ju[i]=='\r'){ 
    }else{
        printf("%d",y);
        if(i<sum-1){
        printf(" ");
    }
        y=0;
        x=ju[i];
        i--;        
        }
    }
    return 0;
}

by Zsyxing @ 2022-08-18 14:46:01

@TheLoner

本地少输出了最后一个


by Zsyxing @ 2022-08-18 14:48:57

样例7 3 1 6 1 6 4 3 1 6 1 6 1 3 7

您本地输出的是7 3 1 6 1 6 4 3 1 6 1 6 1 3

少了最后一个


by TheLoner @ 2022-08-18 20:31:23

@Zsyxing

#include <stdio.h>

int main(){

    char ju[40000];
    int a=0,i,x='0',y=0,p=0,sum;
    for (i=0;;i++){
        scanf("%c",&ju[i]);
        if (ju[i]!='\n'){
           a++;
        }else{
           break;
        }
    }
    sum=a*(a+1)-1;
    for (i=a;i<sum;i++){
        scanf("%c",&ju[i]);
    }
    printf("%d ",a);
    for (i=0;i<sum;i++){
        if(ju[i]==x){
        y++;
    }else if(ju[i]=='\n'||ju[i]=='\r'){ 
    }else{
        printf("%d",y);
        if(i<sum-1){
        printf(" ");
    }
        y=0;
        x=ju[i];
        i--;        
        }
    }
    if(y!=0){
    printf("%d",y);
    }
    return 0;
}

这样就有最后一个了,但还是不行啊,大佬


by Zsyxing @ 2022-08-18 20:36:13

你这调了就更不对了现在变成了8 3 1 6 1 6 4 3 1 6 1 6 1 3 7 11了


by Zsyxing @ 2022-08-18 20:43:58

@TheLoner

    if(ju[i]==x){
    y++;

}else if(ju[i]=='\n'||ju[i]=='\r'){ 
}else{
    printf("%d",y);
    if(i<sum-1){
    printf(" ");
}

这里的
else if(ju[i]=='\n'||ju[i]=='\r'){ }

是空的应该错了


by TheLoner @ 2022-08-18 20:48:09

@Zsyxing 啊?我用的Dev,就是对的啊。


by Zsyxing @ 2022-08-18 20:59:03

else if(ju[i]=='\n'||ju[i]=='\r'){ } 这里面的{ }没写东西应该加东西进去输出或者别的东西


by TheLoner @ 2022-08-18 21:08:29

@Zsyxing 那是用来读到回车时,跳过用的。


by Zsyxing @ 2022-08-18 21:12:52

那我也不太清楚了


by TheLoner @ 2022-08-18 21:17:01

@Zsyxing 哦哦,好的,谢谢


| 下一页