题解:P1320 压缩技术(续集版)

· · 题解

前言:

又是一道水题,太好了。

思路:

首先,这道题和 p1319 思路几乎一模一样,不知道的自己去看。于是呢,我们可以将那道题反着来做一下。仔细观察题目,不难发现这道题就是输入一个压缩了以后的图片,然后让我们输出这张图片的边长为几。然后,交替输出 0 和 1 的个数,这道题就结束了。

于是,我们可以使用一个 while 循环,来计算边长为多少。然后,再用 js 变量来计算 0 和 1 的数量,而代码中的 ysm 则是判断 dzt 数组中的第 i 行,第 j 个字符为 0 还是 1,是的话,js 就加 1,否则将 ysm 进行更改。

My AC Code:

#include <bits/stdc++.h>
using namespace std;
int main(){
    string dzt[200];
    int n = 0;
    while(cin>>dzt[n]) n++;
    cout<<n<<' ';  
    char ysm='0';
    int js=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(dzt[i][j]==ysm)
                js++;
            else{
                cout<<js<<' ';
                ysm=(ysm=='0')?'1':'0';
                js=1;
            }
        }
    }
    cout<<js;
    return 0;
}

每天一题解,红名靠近我。