为啥错了啊

P1320 压缩技术(续集版)

Bf030808 @ 2022-10-06 21:27:40

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n,t=0,m=0,l;    
    char s[40001];
    scanf("%s",s);
    l=int(strlen(s));
    for(int i=l;i<l*l;i++)  
            scanf(" %c",&s[i]);
    printf("%d",l); 
    for(int i=0;i<l*l;i++){
        if(s[i]=='0')
            t++;
        if(s[i]=='1')
            m++;
        if(s[i]!=s[i+1]&&s[i]=='0')
            {printf(" %d",t);t=0;}
        if(s[i]!=s[i+1]&&s[i]=='1')
            {printf(" %d",m);m=0;}
    }
    printf("\n");
    return 0;
}

by ud2_ @ 2022-10-06 21:36:13

第一个数表示连续有几个 0。

所以,当点阵左上角是 1 时会出错。


by Bf030808 @ 2022-10-06 22:09:20

@ud2_ 题上咋不说第一个数是1的话输出0,不看别人代码根本不知道要先输出一个0


|