给我们两棵quadtree的前序遍历,要我吗求原来32*32的矩阵有多少个位置是黑的

quardtree是将区域划分为相等的4个子空间,然后再递归划分这4个子空间,知道满足条件后终止划分

这题的终止条件是遇到黑色或者白色的结点停止递归

至于为什么一个前序遍历就能建树,是因为结点颜色的缘故,所以能够知道何时递归返回。所以能够建立一课树

都没什么空敲java代码,反正C++语法都很熟悉了,就用java刷题吧,刷题,学java两不误

 1 import java.util.Scanner;
 2
 3
 4 public class Main {
 5     static Scanner cin = new Scanner(System.in);
 6     final static int LEN = 32;
 7     static int ans = 0;
 8     static String str;
 9     static int p;
10     static int [][] mat = new int [LEN][LEN];
11     public static void dfs(int r, int c, int w){//(r,c)是左上角
12
13         char ch = str.charAt(p++);
14         if(ch=='p'){
15             dfs(r,c+w/2,w/2);//对于图中区域1部分的,
16             dfs(r,c,w/2);//对于图中区域2部分的,
17             dfs(r+w/2,c,w/2);//对于图中区域3部分的,
18             dfs(r+w/2,c+w/2,w/2);//对于图中区域4部分的,
19         }
20         else if(ch=='f'){//如果遇到黑色的结点,就填充矩形
21             for(int i=r; i<r+w; ++i)
22                 for(int j=c; j<c+w; ++j)
23                 if(mat[i][j]==0){//因为是两棵树合并,所以有可能重复填充,所以只有填充0的时候计算ans++
24                     mat[i][j] = 1;
25                     ans++;
26                 }
27         }
28     }
29     public static void init(){
30         ans = 0;
31         for(int i=0; i<LEN; ++i)
32             for(int j=0; j<LEN; ++j)
33                 mat[i][j] = 0;
34     }
35     public static void main(String[] args) {
36         int n;
37
38         n = cin.nextInt();
39         cin.nextLine();
40         for(int i=0; i<n; ++i){
41             init();
42             p = 0;
43             str = cin.nextLine();
44             dfs(0,0,LEN);
45             p = 0;
46             str = cin.nextLine();
47             dfs(0,0,LEN);
48             System.out.println("There are "+ans+" black pixels.");
49         }
50     }
51
52 }

View Code

转载于:https://www.cnblogs.com/justPassBy/p/4457301.html

uva297(quadtree)相关推荐

  1. 视频编解码(八):264/265解码器小结

    一.灵活的编码结构 作者:DayInAI   日期:20190123 在H.265中,将宏块的大小从H.264的16×16扩展到了64×64,以便于高分辨率视频的压缩.同时,采用了更加灵活的编码结构来 ...

  2. 3D地形编程——之GeoMipMap基础(1)

    HoneyCat游戏编程学习笔记---之3D地形编程 原著<Focus on 3D Terrain Programming> 翻译:邱涛 风轻炫舞 HoneyCat Email:qiuta ...

  3. Barnes-Hut算法(quad-tree的一个应用)

    Barnes-Hut算法是一种用于实现N体问题(n-body)模拟的近似算法,该算法由Josh Barnes 和 Piet Hut在1986年提出(可以参加文献[3]).N体问题是指找出已知初始位置. ...

  4. gaia引擎分析(二)场景管理

    只是粗略的分析原理,大虾轻喷~~ Gaia引擎中没有场景管理器(scenemanager)这种东西,但是并不是没有场景管理,而是在cGameHost类中有一课场景树进行场景组织.一棵四叉树用来进行剪裁 ...

  5. LeetCode 558. 四叉树交集(递归)

    1. 题目 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft.topRight.bottomLeft 和 bottomRight.四叉树通常被用来划分一个二维空间,递归地将其细分为四个 ...

  6. LeetCode 427. 建立四叉树(递归)

    1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每 ...

  7. 图像融合论文及代码网址整理总结(1)——多聚焦图像融合

    写在前面的话: 本篇博文主要整理汇总一下现有的多聚焦图像融合算法(文章和代码).适当地,也会整理出相关作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利. ...

  8. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  9. 数据结构与算法 学习笔记(中)

    油管上的CS61B的视频 学习代码 随看随记 Dijkstra's algorithm再理解 Asymptotics 本意是渐近的意思:这里代指当参数为无穷大时,所需要进行运算的次数,和我们常说的复杂 ...

  10. 《Real-Time Rendering 4th Edition》全文翻译 - 第6章 纹理化(下)6.7 ~ 6.9

    最近比较有动力,再来一篇!~ 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第6章 纹理化 Chapter 6 Texturing 6.7 凹凸映射 Bu ...

最新文章

  1. lightinthebox程序bug zencart
  2. [linux]centos7下解决yum install mysql-server没有可用包
  3. Docker极简入门
  4. 记一次 .NET 车联网云端服务 CPU爆高分析
  5. android自定义表盘部件,Android自定义view仿支付宝芝麻信用表盘
  6. js提交java后台,双引号转义为quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决
  7. 解决mysql分页数据错乱问题
  8. 参考官方mysql自定义一个mysql sink connector
  9. ModuleNotFoundError: No module named 'exceptions'
  10. Linux paste命令
  11. 只腐蚀毛刺 腐蚀算法_工件刺虽小,去除却难!介绍几种先进去毛刺工艺,操作简单实用...
  12. 2020-11-26
  13. html仿qq截图,javascript实现粘贴qq截图功能(clipboardData)
  14. php将多张图片合并成pdf,如何简单有效的将多张图片合并成一个PDF文件
  15. Redis源码学习(11),t_hash.c 学习(二),hget 相关命令学习
  16. 某宝用户行为数据分析
  17. 企查查app sign算法破解初步探索
  18. GridView 控制默认分页页码间距 及字体大小
  19. matlab 符号 积分法,MATLAB积分方法
  20. Excel表格列多选

热门文章

  1. linux已开机时间,Linux查看系统开机时间
  2. Hive基本操作入门
  3. 终端下svn常用命令介绍
  4. spring-cloud Sleuth
  5. 九度OJ 题目1534:数组中第K小的数字(二分解)
  6. Lync Server 2010迁移至Lync Server 2013部署系列 Part7:配置Office Web App 02
  7. java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]
  8. Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误
  9. iBatis和Hibernate浅析
  10. 我的 WinClock 项目系列之一 (概述)