题解:P1319 压缩技术

· · 题解

题解:P1319 压缩技术

题解区竟然又开了赶紧写一篇。

思路简述

题目还是很简单的,直接按照题意模拟即可。

因为事先并不知道输入有几个数,所以我们采用 while(cin>>x) 的方式进行输入。再开一个全局变量的数组 a 用于记录点 a_i 为 1 还是 0。另外用一个变量 cnt 记录当前输入的是第几个压缩码,通过它的奇偶性判断当前的压缩码是 1 的个数还是 0 的个数。如果当前是 0 就不用管他,如果是 1 就把连续 x 个 1 塞进数组里。最后输出就好了。

代码呈现

C++

#include<bits/stdc++.h>
using namespace std;
int a[10010],n,x,cnt=1,i=1;
int main(){
    cin>>n;
    while(cin>>x){
        if(cnt%2!=0) i+=x;//偶数代表是零不用管 
        else{
            for(int j=1;j<=x;j++) a[i]=1,i++;//否则把连续x个1塞进数组里 
        }
        cnt++;//个数加一 
    }
    for(int i=1;i<=n*n;i++){
        cout<<a[i];
        if(i%n==0)cout<<endl;
    }
    return 0;
}

The end.