uva297(quadtree)
给我们两棵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)相关推荐
- 视频编解码(八):264/265解码器小结
一.灵活的编码结构 作者:DayInAI 日期:20190123 在H.265中,将宏块的大小从H.264的16×16扩展到了64×64,以便于高分辨率视频的压缩.同时,采用了更加灵活的编码结构来 ...
- 3D地形编程——之GeoMipMap基础(1)
HoneyCat游戏编程学习笔记---之3D地形编程 原著<Focus on 3D Terrain Programming> 翻译:邱涛 风轻炫舞 HoneyCat Email:qiuta ...
- Barnes-Hut算法(quad-tree的一个应用)
Barnes-Hut算法是一种用于实现N体问题(n-body)模拟的近似算法,该算法由Josh Barnes 和 Piet Hut在1986年提出(可以参加文献[3]).N体问题是指找出已知初始位置. ...
- gaia引擎分析(二)场景管理
只是粗略的分析原理,大虾轻喷~~ Gaia引擎中没有场景管理器(scenemanager)这种东西,但是并不是没有场景管理,而是在cGameHost类中有一课场景树进行场景组织.一棵四叉树用来进行剪裁 ...
- LeetCode 558. 四叉树交集(递归)
1. 题目 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft.topRight.bottomLeft 和 bottomRight.四叉树通常被用来划分一个二维空间,递归地将其细分为四个 ...
- LeetCode 427. 建立四叉树(递归)
1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络.网络中每一格的值只会是真或假.树的根结点代表整个网络.对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每 ...
- 图像融合论文及代码网址整理总结(1)——多聚焦图像融合
写在前面的话: 本篇博文主要整理汇总一下现有的多聚焦图像融合算法(文章和代码).适当地,也会整理出相关作者的学术主页.整理这些的初衷,是为了方便自己,顺便也给同领域的研究者在找代码等方面提供些许便利. ...
- 杭电oj题目题型分类(转)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
- 数据结构与算法 学习笔记(中)
油管上的CS61B的视频 学习代码 随看随记 Dijkstra's algorithm再理解 Asymptotics 本意是渐近的意思:这里代指当参数为无穷大时,所需要进行运算的次数,和我们常说的复杂 ...
- 《Real-Time Rendering 4th Edition》全文翻译 - 第6章 纹理化(下)6.7 ~ 6.9
最近比较有动力,再来一篇!~ 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第6章 纹理化 Chapter 6 Texturing 6.7 凹凸映射 Bu ...
最新文章
- lightinthebox程序bug zencart
- [linux]centos7下解决yum install mysql-server没有可用包
- Docker极简入门
- 记一次 .NET 车联网云端服务 CPU爆高分析
- android自定义表盘部件,Android自定义view仿支付宝芝麻信用表盘
- js提交java后台,双引号转义为quot;解决办法……StringEscapeUtils.unescapeHtml4完美解决
- 解决mysql分页数据错乱问题
- 参考官方mysql自定义一个mysql sink connector
- ModuleNotFoundError: No module named 'exceptions'
- Linux paste命令
- 只腐蚀毛刺 腐蚀算法_工件刺虽小,去除却难!介绍几种先进去毛刺工艺,操作简单实用...
- 2020-11-26
- html仿qq截图,javascript实现粘贴qq截图功能(clipboardData)
- php将多张图片合并成pdf,如何简单有效的将多张图片合并成一个PDF文件
- Redis源码学习(11),t_hash.c 学习(二),hget 相关命令学习
- 某宝用户行为数据分析
- 企查查app sign算法破解初步探索
- GridView 控制默认分页页码间距 及字体大小
- matlab 符号 积分法,MATLAB积分方法
- Excel表格列多选
热门文章
- linux已开机时间,Linux查看系统开机时间
- Hive基本操作入门
- 终端下svn常用命令介绍
- spring-cloud Sleuth
- 九度OJ 题目1534:数组中第K小的数字(二分解)
- Lync Server 2010迁移至Lync Server 2013部署系列 Part7:配置Office Web App 02
- java开发_eclipse导出为war文件,热部署到tomcat运行总结[转]
- Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误
- iBatis和Hibernate浅析
- 我的 WinClock 项目系列之一 (概述)