20px求助

P1320 压缩技术(续集版)

laozhang_123 @ 2024-02-07 15:13:42

#include<bits/stdc++.h>
using namespace std;
int s[100010]={1};
int main(){
    char ch;
    int a,cnt=0,sum=1;
    char tch;
    cin>>tch;
    while(cin>>ch){
        if(ch!=tch){
            tch=ch;
            cnt++;}
        s[cnt]++;
        sum++;}
    cout<<sqrt(sum)<<' ';
    for(int i=0;i<=cnt;i++) cout<<s[i]<<' ';
    return 0;
}

by lizicheng3042 @ 2024-02-07 15:19:46

嗯,因为**第一个数表示连续有几个

$1$,第三个数再接下来连续有几个 $0$,第四个数接着连续几个 $1$**,所以,以你的程序,第一个读入的字符是 $1$ 的话应该会出问题,想办法判断一下吧

by laozhang_123 @ 2024-02-09 16:34:04

@lizicheng3042 SO,为啥还是WA


by lizicheng3042 @ 2024-02-15 09:58:14

……怎么说呢,我不知道你怎么修改的你的代码,因此无法准确回复


by whlwhlwhl @ 2024-03-04 17:03:05

因为第一个数表示连续有几个0,若输入的第一个数为1的话,应该先输出一个0,表示连续有0个0,后面再进行正常的交叉判断即可


|