有一个变长为 N(N=2n) 的正方形矩阵,其中元素均为0或1,如下方左图所示。
为了保存左图这样的矩阵,经常使用四分树来完成。对于一个 N∗N 的矩阵,N≤512 且 N=2i,如果这个矩阵中的数不全一样,那么我们会把这个矩阵分成4个 N/2∗N/2 的矩阵,如左图中红色粗线所示。
之后,我们再对这4个 N/2∗N/2 的矩阵进行划分,同样地,如果里面的数不全一样则划分成 N/4∗N/4 的矩阵。左图里面右边的两个 N/2∗N/2 的矩阵就被这样再度划分了。如此可以持续进行划分,直到里面的数全一样。左图粗线展示了完全划分完毕的样子。
我们一般都将矩阵存成右图这样的四分数的形式,这棵树是通过左图里面的划分得到的。右图里面的每一个节点都代表左图里面的矩阵,而树的根结点代表整个大的矩阵。如果树中一个结点的值为1,则代表这个结点对应的矩阵需要划分成4个小矩阵(对应的4个节点按照左上、右上、左下、右下的顺序进行排列,可参考题目配图)。否则,这个结点将包含两个数。第一个数为0,表示不用再划分,第二个数为0,表示整个矩阵都是这个值。整棵树可以用它的宽度优先遍历得到的结果来表示,如右图的树可以表示为
(1)(0,0)(1)(0,1)(1)(0,0)(0,1)(1)(0,0)(0,0)(0,0)(0,1)(0,1)(0,0)(0,1)(0,0)(0,1)
删掉括号和逗号,我们可以得到一个更简短的纯二进制编码:
100101100011000000010100010001
现在请你编写一个程序,求出给定矩阵的二进制形式的编码。