Quadtrees UVA - 297
题目链接:https://vjudge.net/problem/UVA-297
题目大意:如上图所示,可以用一个四分树来表示一个黑白图像,方法是用根节点表示整副图像,然后把行列各等分两等分,按照图中的方式进行编号,从左到右对应4个结点
如果某子结点对应的区域全为黑或白,则直接用一个黑结点或者白结点表示:如果既有黑油油白 则用一个灰结点表示 并且为这个区域递归建树。
给出两颗树的现需遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表示中间结点,f表示黑色 e表示白色
思路:首先一定要把题意读懂。 首先给你一幅图,这幅图的像素的是1024 是正方形区域 你可以看做是32*32的区域 每个块可以看做1 2 3 4个块
问你两棵树合并之后有多少个黑色像素的点。
具体怎么做呢 ? 只要我们能编写一个“画出来”的过程 边画边统计即可!
如果碰到的是p 那么接着画新的区域。 我们可以用一个数组来存储改点是否是黑色 刚开始区域是32*32的大小 我们可以看做起点是(0,0)终点是(31,31)的1024个点
四个区域正如题目要求的一样 一直遍历下去就行了
看代码:
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
const int len=;
const int maxn=+;
char s[maxn];
int buf[len][len],cnt;
/*
把字符串s[p...]导出到以(r,c)为左上角,边长为w的缓冲区内
*/
//draw(s,p,0,0,len);
void draw(const char* s,int& p,int r,int c,int w)
{
char ch=s[p++];
if(ch=='p')
{
draw(s,p,r,c+w/,w/);//
draw(s,p,r,c,w/);//
draw(s,p,r+w/,c,w/);//
draw(s,p,r+w/,c+w/,w/);//
}
else if(ch=='f')//画黑像素
{
for(int i=r;i<r+w;i++)
{
for(int j=c;j<c+w;j++)
if(buf[i][j]==)
{
buf[i][j]=;
cnt++;
}
}
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
memset(buf,,sizeof(buf));
cnt=;
for(int i=;i<;i++)
{
cin>>s;
int p=;
draw(s,p,,,len);
}
printf("There are %d black pixels.\n",cnt);
}
return ;
}
Quadtrees UVA - 297的更多相关文章
- 【紫书】Quadtrees UVA - 297 四叉树涂色
题意:前序遍历给出两个像素方块.求两个方块叠加后有几个黑色格子. 题解:每次读进来一个方块,就在二维数组上涂色.每次把白色涂黑就cnt++: 具体递归方法是以右上角坐标与边长为参数,每次通过几何规律往 ...
- 四分树 (Quadtrees UVA - 297)
题目描述: 原题:https://vjudge.net/problem/UVA-297 题目思路: 1.依旧是一波DFS建树 //矩阵实现 2.建树过程用1.0来填充表示像素 #include < ...
- UVa 297 Quadtrees(树的递归)
Quadtrees 四分树就是一颗一个结点只有4个儿子或者没有儿子的树 [题目链接]UVa 297 Quadtrees [题目类型]树的递归 &题意: 一个图片,像素是32*32,给你两个先序 ...
- UVA.297 Quadtrees (四分树 DFS)
UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...
- uva 297 quadtrees——yhx
Quadtrees A quadtree is a representation format used to encode images. The fundamental idea behind ...
- UVA 297 Quadtrees(四叉树建树、合并与遍历)
<span style="font-size: 18pt; font-family: Arial, Helvetica, sans-serif; background-color: r ...
- 297 - Quadtrees (UVa)
Quadtrees A quadtree is a representation format used to encode images. The fundamental idea behind t ...
- UVa 297 Quadtrees -SilverN
A quadtree is a representation format used to encode images. The fundamental idea behind the quadtre ...
- UVa 297 (四分树 递归) Quadtrees
题意: 有一个32×32像素的黑白图片,用四分树来表示.树的四个节点从左到右分别对应右上.左上.左下.右下的四个小正方区域.然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的 ...
随机推荐
- C++11新标准:constexpr关键字
一.constexpr意义 将变量声明为constexpr类型以便由编译器来验证变量是否是一个常量表达式(不会改变,在编译过程中就能得到计算结果的表达式).是一种比const更强的约束,这样可以得到更 ...
- java反射机制的进一步理解
承上一篇. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...
- redis配置文件常用配置介绍
博客内容首发地址 参数说明 redis.conf 配置项说明如下: Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 当Redis以守护进 ...
- UI界面相关
在开发中有些控件或者控件显示的属性需要经常设置,但是又是万变不离其中,经常写着一样的代码会显得冗余,不利于阅读.这里做了简化. 1.UI控件 2.颜色管理 3.图片管理 4.字体选择
- ARC102D(构造)
ARC102D(构造) 构造一个图,使得\(n \le 20,m\le 60\),边从小的点连向大的点,并且从1到n的所有路径,长度与\([0, l-1]\)构成双射. 用二进制的思想--代码很鬼畜 ...
- Bash Shell 小试牛刀
一.终端打印 [root@cai ~]# echo welcome to bash! welcome to bash! [cairui@cai ~]$ echo 'welcome to bash!' ...
- dede地图显示最新文章的解决方法
以DEDECMS5.6为例:sitemap.htm 在/templets/plus/目录里,就算添加了织梦相关标签调用,但却不能显示文章. 这是因为makehtml_map.php不能解析织梦的相关调 ...
- Oracle恢复表数据
Oracle恢复数据 在oracle 10g以及之后的版本,提供了回收站的机制,为了防止误操作将表数据清空而有回收机制. 换句话说,我们删除的表不会立马消失,而是进入回收站.下面我们可以查看回收站 查 ...
- NSArray,NSMutable和NSSet,NSMutableSet和NSDictionary,NSMutableDictionary用法
开始编写应用程序的代码时,可以利用大量的 Objective-C 框架.其中,为所有应用程序提供基本服务的 Foundation 框架尤为重要.Foundation 框架包括表示基本数据类型的值类(如 ...
- IIS反向代理