怎么做?

P1320 压缩技术(续集版)

difficultlong @ 2024-09-01 07:24:55

我快没了,到底怎样是对的!

#include<bits/stdc++.h>
using namespace std;
char s1[201],ch;
int sum=1;
char s[40001];
int main(){
    scanf("%s",s1+1);
    int len=strlen(s1+1);
    for(int i=1;i<=len;i++){
        s[i]=s1[i];
    }
    int p=len;
    for(int i=len;i<=len*len+len-1;i++){
        scanf("%c",&ch);
        if(ch=='\n'){
            continue;
        }
        p++;
        s[p]=ch;
    }
    printf("%d ",len);
    for(int i=1;i<=len*len;i++){
        if(s[i]==s[i+1]){
            sum++;
        }
        else{
            printf("%d ",sum);
            sum=1;
        }
    }
    return 0;
}

求大佬解答,希望大佬一次性,把我所有的错误说出来


by dmc0702 @ 2024-09-01 08:18:20

@bianchengzai 在 printf("%d ",len); 后加一句 if(s[1]=='0') printf("0 "); 因为第一个数表示连续有几个0,你这段代码如果开头是1的话就直接输出有几个连续的1了,要加特判。

求关QAQ


by difficultlong @ 2024-09-01 10:07:25

@dmc0702 感谢,已关注哦!


by difficultlong @ 2024-09-01 10:12:29

@dmc0702 呜呜,我好像废了,到底怎么做!!!我又又叒错了,救命!!!到底怎么回事


by dmc0702 @ 2024-09-01 12:20:44

@bianchengzai

直接加上去就能AC了呀?

#include<bits/stdc++.h>
using namespace std;
char s1[201],ch;
int sum=1;
char s[40001];
int main(){
    scanf("%s",s1+1);
    int len=strlen(s1+1);
    for(int i=1;i<=len;i++){
        s[i]=s1[i];
    }
    int p=len;
    for(int i=len;i<=len*len+len-1;i++){
        scanf("%c",&ch);
        if(ch=='\n'){
            continue;
        }
        p++;
        s[p]=ch;
    }
    printf("%d ",len);
    if(s[1]!='0')
        printf("0 ");
    for(int i=1;i<=len*len;i++){
        if(s[i]==s[i+1]){
            sum++;
        }
        else{
            printf("%d ",sum);
            sum=1;
        }
    }
    return 0;
};

|