题目链接:

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 题解的更多相关文章

  1. [C++]四分树(Quadtrees)

    [本博文非博主原创,思路与题目均摘自 刘汝佳<算法竞赛与入门经典(第2版)>] 四分树Quadtrees 一幅图有1024个点, 可以对图平均分成4块, 并且子图也可以再往下分, 直到一个 ...

  2. Uva297 Quadtrees【递归建四分树】【例题6-11】

    白书 例题6-11 用四分树来表示一个黑白图像:最大的图为根,然后按照图中的方式编号,从左到右对应4个子结点.如果某子结点对应的区域全黑或者全白,则直接用一个黑结点或者白结点表示:如果既有黑又有白,则 ...

  3. 四分树 (Quadtrees UVA - 297)

    题目描述: 原题:https://vjudge.net/problem/UVA-297 题目思路: 1.依旧是一波DFS建树 //矩阵实现 2.建树过程用1.0来填充表示像素 #include < ...

  4. UVA.297 Quadtrees (四分树 DFS)

    UVA.297 Quadtrees (四分树 DFS) 题意分析 将一个正方形像素分成4个小的正方形,接着根据字符序列来判断是否继续分成小的正方形表示像素块.字符表示规则是: p表示这个像素块继续分解 ...

  5. UVa 297 (四分树 递归) Quadtrees

    题意: 有一个32×32像素的黑白图片,用四分树来表示.树的四个节点从左到右分别对应右上.左上.左下.右下的四个小正方区域.然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的 ...

  6. UVA - 297 Quadtrees (四分树)

    题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib& ...

  7. UVA806-Spatial Structures(四分树)

    Problem UVA806-Spatial Structures Accept:329  Submit:2778 Time Limit: 3000 mSec Problem Description ...

  8. 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表

    4513: [Sdoi2016]储能表 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 395  Solved: 213[Submit][Status] ...

  9. UVa 806 四分树

    题意: 分析: 类似UVa 297, 模拟四分树四分的过程, 就是记录一个左上角, 记录宽度wideth, 然后每次w/2这样递归下去. 注意全黑是输出0, 不是输出1234. #include &l ...

随机推荐

  1. ORACLE 11.2.0.4 安装在 rhel6 上

    . 修改host文件,添加本机的host记录 [root@RACDG ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain local ...

  2. UWP开发:获取用户当前所在的网络环境(WiFi、移动网络、LAN…)

    原文:UWP开发:获取用户当前所在的网络环境(WiFi.移动网络.LAN-) UWP开发:获取用户当前所在的网络环境: 在uwp开发中,有时候,我们需要判断用户所在的网络,是WiFi,还是移动网络,给 ...

  3. Elevated privileges for Delphi applications

    BY CRAIG CHAPMAN · PUBLISHED 2015-06-08 · UPDATED 2015-06-08   One of my customers recently asked th ...

  4. wpf中的datagrid绑定操作按钮是否显示或者隐藏

    如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了. 但是在wpf里不行..网上 ...

  5. SAP TABLECONTROL 自定义SEARCH HELP

    项目上需要开发一个界面如下的应用程序.这是一个MB1A发料的辅助程序,限制住移动类型和在特定字段写入产品号. 这个应用程序的主要功能毫无疑问是通过BAPI实现的.但在TABLECONTROL中需要对填 ...

  6. ZooKeeper学习第六期---ZooKeeper机制架构(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...

  7. 29 z-index

    这个东西非常简单,它有四大特性,每个特性你记住了,页面布局就不会出现找不到盒子的情况. z-index 值表示谁压着谁,数值大的压盖住数值小的, 只有定位了的元素,才能有z-index,也就是说,不管 ...

  8. Redi缓存注意事项

    缓存使用的场景 在一个高频访问的应用系统中,每次用户的请求需要去存储中获取数据,会对数据库造成很大的压力.容易导致数据库的奔溃.所以才会出现缓存来分担一部分的数据库的压力. 具体会产生数据库访问压力的 ...

  9. spring 5.x 系列第10篇 —— 整合mongodb (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于com.heibaiying. ...

  10. chrome如何查看cookie

    以mac为例: 第一步:点击chrome的偏好设置 第二步:点击如下图所示的最下面的高级 第三步:点击内容设置,如下所示 第四步:点击cookie,就会出现查看所有cookie和网站数据