小小困惑

P1320 压缩技术(续集版)

Omega_W @ 2022-02-06 20:32:06

本地测试能直接过,但OJ要加上注释那行,为啥呢?

#include <stdio.h>

int main(){
    int n=0,a[40001];
    char c='0';
    while(1){
        scanf("%c",&c);
        if(c=='\n'){
            break;
        }
        else{
            a[n]=(int)c-48;
            n++;
        }
    }
    // n--;
    /*  ↑就是这行   */

    for(int i=0;i<n-1;i++){
        for(int j=0;j<n;j++){
            scanf("%c",&c);
            a[n*(i+1)+j]=(int)c-48;
        }
        if(i<n-2){
            scanf("\n");
        }
    }
    printf("%d ",n);
    int x=0,num=0;
    for(int i=0;i<n*n;i++){
        int numx=a[i];
        if(numx==num){
            x++;
        }
        else{
            printf("%d ",x);
            num=numx;
            x=1;
        }
    }
    printf("%d",x);

    return 0;
}

by ajahjahah @ 2022-02-06 20:36:15

if(c=='\n'){
     break;
   }

? 这不可以用while(scanf("%c",&c))代替吗

貌似scanf不能输入换行?


by ajahjahah @ 2022-02-06 20:37:02

本地测的时候加上n--就只能输入5行


|