P1319 压缩技术

156 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 题目描述

设某汉字由N × N的0和1的点阵图案组成。

我们依照以下规则生成压缩码。连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从左到右,由上至下。第一个数表示连续有几个0,第二个数表示接下来连续有几个1,第三个数再接下来连续有几个0,第四个数接着连续几个1,以此类推……

例如: 以下汉字点阵图案:

0001000
0001000
0001111
0001000
0001000
0001000
1111111

对应的压缩码是: 7 3 1 6 1 6 4 3 1 6 1 6 1 3 7 (第一个数是N ,其余各位表示交替表示0和1 的个数,压缩码保证 N × N=交替的各位数之和) 输入格式

一行,压缩码。 输出格式

汉字点阵图(点阵符号之间不留空格)。(3<=N<=200) 输入输出样例

输入 #1复制

7 3 1 6 1 6 4 3 1 6 1 6 1 3 7

输出 #1复制

0001000
0001111
0001000
0001000
0001000
1111111

 #include<iostream>
    using namespace std;
    int main()
    {
    	int n,i,j,k;
    	cin >> n;
    	int sum = 0,a[201][201];
    	bool m = 0;
    	i = j = 0;
    	while (sum < n * n)
    	{
    		
    		int x;
    		cin >> x;
    		sum += x;
    		for (k = 0; k < x; k++)
    		{
    			if (m == 0)
    			{
    				a[i][j] = 0;
    				j++;
    				if (j == n)
    				{
    					j = 0;
    					i++;
    				}
    			}
    			else
    			{
    				a[i][j] = 1;
    				j++;
    				if (j == n)
    				{
    					j = 0;
    					i++;
    				}
    			}
    		}
    		if (m == 1)
    			m = 0;
    		else
    			m = 1;
    	}
    	for (i = 0; i < n; i++)
    	{
    		for (j = 0; j < n; j++)
    		{
    			cout << a[i][j];
    		}
    		cout << endl;
    	}
    	return 0;
    }