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)代表该节点是黑色的 ...
随机推荐
- 查看类属性和方法---structure
- Windows Services windows服务如何删除服务
如何删除服务 一.为何要删除服务: 1.当服务文件丢失时,在服务里还会显示. 2.现在好多都会有服务,你看那个不顺眼就可以把它干掉.前提是不用的软件. 二.使用: 使用sc.exe 这个是window ...
- Promise 异步函数顺序执行
可以满足需求,且使用方法和Promise.all统一 var a = function() { return new Promise(function(resolve, reject) { setTi ...
- fopen_s()
原型:errno_t fopen_s( FILE** pFile, const char *filename, const char *mode ); 例子: char *filePath=&q ...
- Spring中的事务控制
Spring中事务控制的API介绍 PlatformTransactionManager 此接口是spring的事务管理器,它里面提供了我们常用的操作事务的方法 我们在开发中都是使用它的实现类: 真正 ...
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等.咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的 ...
- P3345 [ZJOI2015]幻想乡战略游戏 动态点分治
\(\color{#0066ff}{ 题目描述 }\) 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越 ...
- JS基础学习四:绑定事件
添加事件 IE: attachEvent Other: addEventListener var button = document.getElementById("buttonId&quo ...
- 【模板】缩点 tarjan+dp
题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...
- [Leetcode]017. Letter Combinations of a Phone Number
public List<String> letterCombinations(String digits) { LinkedList<String> ans = new Lin ...