C,60分求助!

P1320 压缩技术(续集版)

UTAsriel @ 2023-02-07 10:47:22

#include <stdio.h>

int sc[40000+10];
int main(void){
    int x=0,n,a,sz[40000+10],pd=0,ssc=1,y;
    while(scanf("%1d",&n)==1){
        if(n==1||n==0){
            x++;
            sz[x]=n;
        }
    }
    for(a=1;a<=x;a++){
        while(sz[a]==pd){
            sc[ssc]++;
            a++;
        }
        a--;
        ssc++;
        if(pd==1){
            pd=0;
        }
        else{
            pd=1;
        }
    }
    for(y=3;(y*y)<x;y++){}
    printf("%d",y);
    for(int b=1;b<ssc;b++){
        printf(" %d",sc[b]);
    }
    return 0;
}

待会还要背单词,无法及时回复,请见谅。


by ricky_lin @ 2023-02-07 11:51:22

while(sz[a]==pd)

改成

while(sz[a]==pd && a <= x)

原因:你的sz数组可能越界


by ricky_lin @ 2023-02-07 11:52:16

@UTAsriel


|