想了很多久,真的就不明白我哪里不对了?怎么我才是20分。。。。

P1320 压缩技术(续集版)

Liangzheng123 @ 2022-12-20 17:30:56

#include <stdio.h>
#include <string.h>
int main() {
    char s;
    char txt[40000]="x",str[200];
    scanf("%s", str);//先读入第一行
    int n = strlen(str),count=0;
    strcat(txt, str); // 将第一行的内容复制到txt当中
    for (int i = 1; i <= n-1; i++) {
        scanf("%s", str);
        strcat(txt, str);
    }
    printf("%d ", n);
    s = txt[1];
    for (int i = 1; i < strlen(txt); i++) {
        if (s == txt[i]) count++;
        else {
            printf("%d ", count);
            s = txt[i];
            count = 1;
        }
    }
    printf("%d", count);
    return 0;
}

真的就不明白我哪里不对了,求求大佬解答


by tbdsh @ 2022-12-20 17:53:44

@Liangzheng123

第一个数表示连续有几个 0,第二个数表示接下来连续有几个 1,第三个数再接下来连续有几个 0,第四个数接着连续几个 1,以此类推……

要先输出最开始有几个 0

例如以下数据:

输入

1

正确输出

1 0 1

您的程序输出

1 1

by Liangzheng123 @ 2022-12-20 20:15:48

@tianbiandeshenghuo11 非常感谢!是我都题目不够仔细


|