UVA806 空间结构 Spatial Structures 搜索

本文介绍了如何处理UVA806问题,即通过四分树结构与五进制数之间的相互转换。四分树是一种特殊的树结构,其中节点表示由0和1构成的矩阵。给定矩阵,需要将其转换为排序后的五进制数列表;反之,给定数列,需要重构相应的矩阵。解题思路包括深度优先搜索(DFS)和递归,分别用于矩阵转数列和数列转矩阵的过程。代码实现涵盖了这两个主要步骤。
摘要由CSDN通过智能技术生成

题目传送门

在这里插入图片描述
题意翻译
一个四分树是由一个方格的结构组成的,如图:(就是上面的三个图)。

那些像素点可以构成一个四分树,如图:(就是上面的那个树)。

我们规定,NW=1,NE=2,SW=3,SE=4,而一个节点所构成的数字串可以认为是一个五进制数,将它们排序后输出。

例如:上图中地四号节点的路径为NE,SW,所以是
32(5进制) = 17(十进制)

那么上树所对应的一传数列为:(在十进制下)9 14 17 22 23 44 63 69 88 94 113

你的任务是在这两者之间转换。
注意,数串中的数字顺序是从叶子到根的,别搞错了。

输入格式:

先输入一个nn,|n|表示这个正方形的边长(|n| < 64)如果nn是正数,那么输入一个n\times nn×n由00和11方阵(00代表这个点是黑的,11代表这个点是白的)。如果nn是负数,那么就会跟着一串数,表示最后矩阵所对的数列,以-1结束。

输出格式:

如果输入的是一个方阵,输出所有黑点的路径转化并排序后的结果,后面跟着一个数,表示黑色节点数。注意每1212个换一行。

如果输入的是一串数没那么输出它所对应的方阵。

每一个数据后面请空一行,最后不要空行,结尾不要有多余的空格。

输入输出样例

输入

8
00000000
00000000
00001111
00001111
00011111
00111111
00111100
00111000
-8
9 14 17 22 23 44 63 69 88 94 113 -1
2
00
00
-4
0 -1
0

输出

Image 1
9 14 17 22 23 44 63 69 88 94 113
Total number of black nodes = 11
Image 2
........
........
....****
....****
...*****
..******
..****..
..***...
Image 3
Total number of black nodes = 0
Image 4
****
****
****
****

思路

这题其实就是两个目的

  • 给一张矩阵,翻译出它代表的5进制数们
  • 给一堆数,画出代表他们的矩阵

将一个矩阵分为四块,如果进入左上,代表进入树的1节点,右上2节点,左下3,右下4

进入树的深度为h的层的x号节点,所代表的数就要加 【5的h-1 次方】* x

对于问题1,dfs即可解决

  • 如果一个区域内全是1,那么这个区域就是叶子节点,最终的结果就是走过来的路径和
  • 否则,递归上左,上右,下左,下右四个区域,递归进去的时候,更新路径和,路径和 += 【5 的深度-1 次方】*方向,并且深度+1

对于问题2,也是dfs

  • 先将整数转换为五进制的串
  • 然后从结尾开始,如果是1,就递归进左上,2进右上,3进左下,4进
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值