-->
当前位置:首页 > 题库

编程题:贪心算法

Luz4年前 (2022-09-06)题库271
Josip是个奇怪的画家。他想画一幅由N×N像素组成的画,其中N是2的幂(1、2、4、8、16等)。每个像素将是黑色或白色。Josip已经知道每个像素的颜色。

如果Josip的绘画过程不奇怪的话,这就没有问题了。他使用以下递归过程:

•如果图片是单像素的,他会按照自己的意愿给它上色。
•否则,将正方形拆分为四个较小的正方形,然后:

1.从四个正方形中选择一个,并将其涂成白色。
2.从剩下的三个方块中选择一个,并将其涂成黑色。
3、把剩下的两个正方形看作新的画,并用同样的三步过程。

很快,他注意到,用这个过程不可能把所有的想法都画上去。你的任务是编写一个程序,将绘制一幅与所需图片相差尽可能小的图片。两张图片之间的差异是指对应位置上颜色不同的像素对的数量。

### 输入格式:
第一行包含一个整数$$N(1≤N≤512)$$,表示$$Josip$$想画的画的大小。$$N$$是2的幂次。

以下$$N$$行中的每一行都包$$N$$个数字(0或1),表示一行中的白色和黑色方块。

### 输出格式:
在第一行,输出可能达到的最小差异。

在接下来的$$N$$行中,输出一张可以用$$Josip$$的流程绘制的图片,并获得最小的差异。图片的格式应与输入中的格式相同。

注意:输出的第二部分可能不是唯一的。任何正确的输出都将被接受。


### 输入样例1:
in
4
0001
0001
0011
1110


### 输出样例1:
out
1
0001
0001
0011
1111


### 输入样例2:
in
4
1111
1111
1111
1111


### 输出样例2:
out
6
0011
0011
0111
1101


### 输入样例3:
in
8
01010001
10100011
01010111
10101111
01010111
10100011
01010001
10100000


### 输出样例3:
out
16
00000001
00000011
00000111
00001111
11110111
11110011
11110001
11110000






答案:若无答案欢迎评论