0分求助,为什么全是WA
查看原帖
0分求助,为什么全是WA
1080548
liferookie楼主2023/9/14 22:00

如题,真的是搞不明白,明明答案感觉没问题

#include <stdio.h>

int main(){
    int n;
    int oneNumber=0;
    int zeroNumber=0;

    char c[200];
    for(int i=0;i<200;i++){
        scanf("%c",&c[i]);
        if(c[i]=='\n'||c[i]=='\0'){
            n=i;
            break;
        }
    } //读取第一行
    char a[n-1][n];
    for(int x=0;x<n-1;x++){ //上面已经读取一行了,则n-1
        for(int y=0;y<=n;y++){ //需要y=n读取后面的'\n'防止变量混乱
            scanf("%c",&a[x][y]);
        }
    } //剩下的行

    printf("%d",n); //输出行数

    for(int i=0;i<n;i++){
        if(c[i]=='0'){
            zeroNumber++;
            if(oneNumber!=0){//证明是一后首个零
                printf(" %d",oneNumber);
                oneNumber=0; //清空'1'的个数
            } //第一个零则输出上个一的个数
        } else { //非'0'则'1'
            if(zeroNumber==0 && oneNumber==0){
                printf(" 0");
            } //第一个一没有上个零证明是第一个数,需要输出0
            oneNumber++;
            if(zeroNumber!=0){//证明是零后首个一
                printf(" %d",zeroNumber);
                zeroNumber=0; //清空'0'的个数
            }
        }
    } //仅为第一行,需要更换变量重复代码
    for(int x=0;x<n-1;x++){
        for(int y=0;y<n;y++){
            if(a[x][y]=='0'){
                zeroNumber++;
                if(oneNumber!=0){
                    printf(" %d",oneNumber);
                    oneNumber=0;
                }
            } else {
                oneNumber++;
                if(zeroNumber!=0){
                    printf(" %d",zeroNumber);
                    zeroNumber=0;
                }
            } //重复的代码
            if(x==n-2 && y==n-1){ //最后一位数直接打印
                if(zeroNumber==0){
                    printf(" %d",oneNumber);
                } else {
                    printf(" %d",zeroNumber);
                }
            }
        }
    }
    return 0;
}

2023/9/14 22:00
加载中...