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 ...
随机推荐
- UWP入门(六)-- ResourceDictionary 和 XAML 资源引用
原文:UWP入门(六)-- ResourceDictionary 和 XAML 资源引用 你最希望声明为 XAML 资源的 XAML 元素包括 Style.ControlTemplate.动画组件和 ...
- 【Windows10 IoT开发系列】Powershell命令行实用程序
原文:[Windows10 IoT开发系列]Powershell命令行实用程序 更新帐户密码: 强烈建议你更新默认的管理员帐户密码.若要更新帐户密码,你可以发出以下命令: net user Admin ...
- Python日记:基于Scrapy的爬虫实现
安装 pywin32 和python版本一致 地址 https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/安装过程中提示 ...
- Mac App Store应用签名和pkg签名,查看签名
App签名 只有用苹果颁发的证书签名的应用才能在App Store上进行销售,所以我们开发的应用必须打上签名. 签名有两种方式,一是使用Xcode,在配置里面设置签名,编译出来的app就有了签名:二是 ...
- Linux下的软件安装
在线安装 APT:advanced packaging Tool,Debian及其派生的发行版的软件包管理工具,包含以apt-开头的多个工具,如apt-get,apt-cache,apt-cdrom ...
- Android应用开机自启动问题
本文主要介绍Android应用如何实现开机自启动.自启动失败的原因以及通过ADB命令模拟发送BOOT_COMPLETED开机广播. 1.Android应用如何实现开机自启动 (1) 实现一个广播类,接 ...
- Delphi与Windows 7下的用户账户控制(UAC)机制(有可能需要取消enable runtime themes)
WIN7/WIN8/WIN10, Vista提供的UAC机制,它的主要目的是防止对于操作系统本身的恶意修改.对于Delphi程序的影响,UAC主要在于以下几点:1.由于UAC机制,Delphi对于系统 ...
- Dependency Injection 筆記 (4)
续上集未完的相关设计模式... (本文摘自電子書:<.NET 依賴注入> Composite 模式 延续先前的电器比喻.现在,如果希望 UPS 不只接计算机,还要接电风扇.除湿机,可是 U ...
- QT父子窗口事件传递与事件过滤器(讲了一些原理,比较清楚)
处理监控系统的时候遇到问题,在MainWidget中创建多个子Widget的时候,原意是想鼠标点击先让MainWidget截获处理后再分派给子Widget去处理,但调试后发现如果子Widget重新实现 ...
- 注册表Demo
一.获取安装程序信息 #include <windows.h> #include <iostream> #include <string> #include < ...