题目传送门
P1319 压缩技术
P1320 压缩技术(续集版)
P1319 压缩技术
输入格式
数据输入一行,由空格隔开的若干个整数,表示压缩码。
其中,压缩码的第一个数字就是 N N N,表示这个点阵应当是 N × N N\times N N×N 的大小。
接下来的若干个数字,含义如题目描述所述。
输出格式
输出一个 N × N N\times N N×N 的 01 矩阵,表示最后的汉字点阵图(点阵符号之间不留空格)。
样例 #1
样例输入 #1
7 3 1 6 1 6 4 3 1 6 1 6 1 3 7
样例输出 #1
0001000
0001000
0001111
0001000
0001000
0001000
1111111
提示
样例解释
数据范围
数据保证, 3 ≤ N ≤ 200 3\leq N\leq 200 3≤N≤200。
注意:数据输入一行,由空格隔开的若干个整数,表示压缩码。输入数据数量不确定,控制台可以使用ctrl+z结束输入。
#include<bits/stdc++.h>
using namespace std;
int main() {int n, num, arr[200][200], x=0, y=0, flag=0;cin>>n;while(cin>>num){while(num--){arr[x][y]=flag;y++;if(y>=n){x++;y=0;}}flag = flag^1;} for(int i=0; i<n; i++){for(int j=0; j<n; j++){cout<<arr[i][j];}cout<<endl;}return 0;
}
P1320 压缩技术(续集版)
输入汉字点阵图,输出压缩码。
#include<bits/stdc++.h>
using namespace std;
int main() {int n, cnt=0, first=1;string s;char pre = '0';while(cin>>s){n = s.size();if(first == 1){cout<<n<<" ";first = 0;}for(int i=0; i<n; i++){if(s[i] == pre) cnt++;else{cout<<cnt<<" ";cnt=1;pre = s[i];}}} cout<<cnt;return 0;
}