UVA297 四分树 Quadtrees 题解
题目链接:
https://www.luogu.org/problemnew/show/UVA297
附几道推荐题目(先完成再食用此题效果更佳)
https://www.luogu.org/problemnew/show/UVA122
https://www.luogu.org/problemnew/show/UVA699
https://www.luogu.org/problemnew/show/UVA839
分析:
本题为树上的递归题目。我们可以在一个子函数search中完成:
void search(int x,int y,int w)
其中x为当前准备判断像素的正方形的最小x坐标,y同理,w为正方形的边长。
每次判断一个字符,如果是灰色,那么继续往下递归:
if(tmp=='p')
{
search(x+w/2,y+w/2,w/2);
search(x+w/2,y,w/2);
search(x,y,w/2);
search(x,y+w/2,w/2);
}
因为每次灰色后都再次切成四块,所以说每次w要除以2
否则,就是黑或白,白不用管,只把黑色的像素填上:
else
{
if(tmp=='f')
{
for(int i=x;i<x+w;i++)
{
for(int j=y;j<y+w;j++)
{
a[i][j]=1;
}
}
}
这些就是本题的核心部分,还有就是要注意输入输出,初始化等等,在此就不赘述了。
代码:
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
int cnt=-1;
char s[1005];
int a[33][33];
void search(int x,int y,int w)
{
char tmp=s[++cnt];
if(tmp=='p')
{
//if(num==1)
search(x+w/2,y+w/2,w/2);
//else
//if(num==2)
search(x+w/2,y,w/2);
//else
//if(num==3)
search(x,y,w/2);
//else
//if(num==4)
search(x,y+w/2,w/2);
}
else
{
if(tmp=='f')
{
//printf("%d %d %d %d\n",xl,yl,xr,yr);
for(int i=x;i<x+w;i++)
{
for(int j=y;j<y+w;j++)
{
a[i][j]=1;
}
}
}
/*if(num==1)
search(xr*2,yr*2,xr,yr,num+1);
else
if(num==2)
search(xl,yr*2,xr*2,yr,num+1);
else
if(num==3)
search(xl,yl,xr*2,yr*2,num+1);
else
if(num==4)
search(xr*2,yl,xr,yr*2,num+1); */
//search(xl,yl,xr,yr,num+1);
}
}
int main()
{
int T;
scanf("%d\n",&T);
while(T--)
{
cnt=-1;
memset(a,0,sizeof(a));
int ans=0;
cin>>s;
search(0,0,32);
cnt=-1;
cin>>s;
search(0,0,32);
for(int i=0;i<=32;i++)
{
for(int j=0;j<=32;j++)
{
if(a[i][j]==1)
ans++;
}
}
printf("There are %d black pixels.\n",ans);
}
return 0;
}
UVA297 四分树 Quadtrees 题解的更多相关文章
- [C++]四分树(Quadtrees)
[本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] 四分树Quadtrees 一幅图有1024个点, 可以对图平均分成4块, 并且子图也可以再往下分, 直到一个 ...
- Uva297 Quadtrees【递归建四分树】【例题6-11】
白书 例题6-11 用四分树来表示一个黑白图像:最大的图为根,然后按照图中的方式编号,从左到右对应4个子结点.如果某子结点对应的区域全黑或者全白,则直接用一个黑结点或者白结点表示:如果既有黑又有白,则 ...
- 四分树 (Quadtrees UVA - 297)
题目描述: 原题:https://vjudge.net/problem/UVA-297 题目思路: 1.依旧是一波DFS建树 //矩阵实现 2.建树过程用1.0来填充表示像素 #include < ...
- UVA.297 Quadtrees (四分树 DFS)
UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...
- UVa 297 (四分树 递归) Quadtrees
题意: 有一个32×32像素的黑白图片,用四分树来表示.树的四个节点从左到右分别对应右上.左上.左下.右下的四个小正方区域.然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的 ...
- UVA - 297 Quadtrees (四分树)
题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...
- UVA806-Spatial Structures(四分树)
Problem UVA806-Spatial Structures Accept:329 Submit:2778 Time Limit: 3000 mSec Problem Description ...
- 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表
4513: [Sdoi2016]储能表 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 395 Solved: 213[Submit][Status] ...
- UVa 806 四分树
题意: 分析: 类似UVa 297, 模拟四分树四分的过程, 就是记录一个左上角, 记录宽度wideth, 然后每次w/2这样递归下去. 注意全黑是输出0, 不是输出1234. #include &l ...
随机推荐
- Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法
原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据 ...
- INS-13001—win10系统安装oracle11g时遇到INS-13001环境不满足最低要求
升级win10系统之后,需要重新安装Oracle,因为在安装Oralce11g时,使用64位的会出现各种不兼容问题,我每次安装都是使用32位的数据库. 在安装时点击setup.exe之后,出现了:[I ...
- 【Qt】无边框窗体中带有ActiveX组件时的一个BUG
无意中发现的一个BUG,Qt5.1.1正式版首先创建一个GUI工程,拖入一个QAxWidget控件(为了使ActiveX生效,需要在.pro文件中加入CONFIG += qaxcontainer)接着 ...
- 開發PlainTasks與JSON的插件
PlainTasks 是款很有名的任務管理插件,具體的介紹在這裡. 我最近的工作作務,是開發一款插件,能實現 JSON 文件到 todo 類文件的轉換. JSON 的格式是這樣的 1: { 2: &q ...
- 深入windows的关机消息截获-从XP到Win7的变化(在XP中程序可以阻止关机,但是在Win7中程序无法阻止关机,可Block的时间从1秒调到了5秒) good
之前写了一个软件用于实验室的打卡提醒,其中一个重要的功能是在关机之前提醒当天晚上是否已经打卡.之前我是在WM_ENDSESSION中弹出一个模态对话框来提醒,在XP中基本工作正常,在Win7中大多数时 ...
- java多线程之生产者-消费者
public class Product { private String lock; public Product(String lock) { this.lock = lock; } public ...
- Linux字体显示不同颜色
功能介绍哦:让echo输出字符串显示不同颜色 一.字体颜色(范围:30-37) echo -e "\033[30m oldboy trainning \033[0m" 黑色字(黑色 ...
- F4帮助
在INITIALIZATION之后添加 AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_month-low 事件,s_month-low为要添加的搜索帮助. 下面 ...
- Spring Cloud Gateway使用
简介 Spring Cloud Gateway是Spring Cloud官方推出的网关框架,网关作为流量入口,在微服务系统中有着十分重要的作用,常用功能包括:鉴权.路由转发.熔断.限流等. Sprin ...
- abp(net core)+easyui+efcore实现仓储管理系统——展现层实现增删改查之列表视图(七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...