专栏文章

题解:P1319 压缩技术

P1319题解参与者 3已保存评论 4

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
4 条
当前快照
1 份
快照标识符
@mip4zmwt
此快照首次捕获于
2025/12/03 06:15
3 个月前
此快照最后确认于
2025/12/03 06:15
3 个月前
查看原文

本题大意

要求根据给定的一组压缩数据还原一个 n×nn×n0101 矩阵。压缩数据的格式是交替给出连续 0011 的个数,第一个数字表示连续 00 的个数,第二个数字表示连续 11 的个数,以此类推。

思路

首先读取矩阵的边长 nn。使用一个循环不断读取压缩数据中的数字 aa ,使用 idid 变量来标记当前应该输出 00 还是 1100 表示输出 0011 表示输出 11)。对于每个数字 aa,连续输出 aa0011,在输出过程中,每输出 nn 个字符就换行。并使用 ss 变量记录已输出的总字符数,当 ss 达到 x2x^2 时停止。

本题代码

CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,a;
int endll,id=0,s;
signed main(){
	cin>>n;
	while(s<n*n){
		cin>>a;
		if(id==0){
			for(int i=1;i<=a;i++){
				if(endll==n){
					cout<<endl;
					endll=0;
				}
				cout<<"0";
				endll++;
				s++;
			}
		}else{
			for(int i=1;i<=a;i++){
				if(endll==n){
					cout<<endl;
					endll=0;
				}
				cout<<"1";
				endll++;
				s++;
			}	
		}
		id++;
		id%=2;
	}
	
	return 0;
}

评论

4 条评论,欢迎与作者交流。

正在加载评论...