dolao请避开

· · 题解

首先我们不知道N是多少 第一次要特别输出

后面就是暴力模拟,遍历一遍,用一个int变量在发现数字交替的时候输出,再把变量赋值为1,一开始是0,然后要注意最后一个压缩码在循环里不会输出

#include <iostream>
using namespace std;

int main(){
    string a[205];//保存汉字点阵图
    char c='0';//保存当前的字符是0/1,一开始题目要求是0开头
    int sum=0;//保存有连续sum个字符相同
    cin>>a[0];//先输入字符串是因为我们不知道N,要用a【0】.size();
    for(int i=1;i<a[0].size();i++) cin>>a[i];//输入汉字点阵图
    cout<<a[0].size()<<" ";//输出N
    for(int i=0;i<a[0].size();i++){
        for(int j=0;j<a[0].size();j++){
            if(a[i][j]==c) sum++;//检测到还是连续0/1  sum++
            else{//不是连续0/1
                c=a[i][j];//将c更改为当前字符
                cout<<sum<<" ";//输出
                sum=1;//特别注意sum=1!!! 因为当前那个也算
            }
        }
    }
    cout<<sum;//将最后一个压缩码输出
    return 0;
}