为什么还是不行?小数据过得了大数据过不了,求助

P1320 压缩技术(续集版)

HYLW @ 2023-05-09 17:42:08

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char a[200],b[40000];
    int ans[100],g=0;
    cin>>a;
    strcpy(b,a);
    int n=strlen(a);
    ans[g++]=n;
    for(int i=2;i<=n;i++){
        cin>>a;
        strcat(b,a);
    }
    int x=1;
    if(b[0]!='0')   ans[g++]=0;
    for(int i=1;i<strlen(b);i++){
       if(b[i]==b[i-1]){
        x++;
       }else{
        ans[g++]=x;
        x=1;
        }
    }
    ans[g]=x;
    cout<<x<<endl;
    for(int i=0;i<=g;i++){
            printf("%d ",ans[i]);
        }
    return 0;
} 

样例2,10过不了,问题出在压缩码最后一个输出(小数据过得了大数据过不了)


by zhouxiaolang @ 2023-05-25 20:25:11

@dwhh 数组开小了!!!!我开大了一点就过了,要仔细审题注意数据范围!!


by zhouxiaolang @ 2023-05-25 20:25:32

#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char a[200000],b[400000];
    int ans[10000],g=0;
    cin>>a;
    strcpy(b,a);
    int n=strlen(a);
    ans[g++]=n;
    for(int i=2;i<=n;i++){
        cin>>a;
        strcat(b,a);
    }
    int x=1;
    if(b[0]!='0')   ans[g++]=0;
    for(int i=1;i<strlen(b);i++){
       if(b[i]==b[i-1]){
        x++;
       }else{
        ans[g++]=x;
        x=1;
        }
    }
    ans[g]=x;
    for(int i=0;i<=g;i++){
            printf("%d ",ans[i]);
        }
    return 0;
} 

@dwhh


by HYLW @ 2023-05-27 16:42:15

谢谢大佬,抱歉现在才看到


by zhouxiaolang @ 2023-05-28 21:06:04

@dwhh 没事不客气


|