求助!!!

P1320 压缩技术(续集版)

Dawn_Zhang @ 2024-08-28 14:53:12

#include<bits/stdc++.h>
using namespace std;
int a[400005];
int cnt=0;
int len;
void fun(string s){
    for(int i=0;i<=len-1;i++){
        a[++cnt]=s[i]-'0';
    }
}
int main(){
    string s;
    cin>>s;
    len=s.size();
    for(int k=1;k<=len-1;k++){
        cin>>s;
        fun(s);
    }
    cout<<len<<" ";
    int f=0,nuu=0;
    for(int i=1;i<=cnt;i++){
        if(f==0){
            if(a[i]==0)nuu++;
            else{
                cout<<nuu<<" ";
                nuu=1;
                f=1;
            }
        }
        else{
            if(a[i]==1)nuu++;
            else{
                cout<<nuu<<" ";
                nuu=1;
                f=0;
            }
        }
    }
}
有一个点是这个

11111

00100

11111

00100

11111 然后输出:5 0 2 1 2 5 2 1 2 但是我的确输出:5 2 1 2 5 2 1 2 怎么调0都不能输出


by Yxy7952 @ 2024-08-28 15:20:19

@Dawn_Zhang

看代码,求关

#include<bits/stdc++.h>
using namespace std;
int a[400005];
int cnt=0;
int len;
void fun(string s){
    for(int i=0;i<=len-1;i++){
        a[++cnt]=s[i]-'0';
    }
}
int main(){
    string s;
    cin>>s;
    len=s.size();
    fun(s);//第一个输入 
    for(int k=1;k<=len-1;k++){
        cin>>s;
        fun(s);
    }
    cout<<len<<" ";
    int f=0,nuu=0;
    for(int i=1;i<cnt;i++){
        if(f==0){
            if(a[i]==0)nuu++;
            else{
                cout<<nuu<<" ";
                nuu=1;
                f=1;
            }
        }
        else{
            if(a[i]==1)nuu++;
            else{
                cout<<nuu<<" ";
                nuu=1;
                f=0;
            }
        }
    }
    if(f==0){
        if(a[cnt]==0)nuu++;
        else{
            nuu=1;
            f=1;
        }
    }
    else{
        if(a[cnt]==1)nuu++;
        else{
            nuu=1;
            f=0;
        }
    }
    cout<<nuu;//最后要特判
}

by Dawn_Zhang @ 2024-08-28 15:28:57

@yixingyou 谢谢,已关


|