题目链接:

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;
}

最新文章

  1. 关于更新发布CSS和JS文件的缓存问题
  2. 利用python实现爬虫爬取某招聘网站,北京地区岗位名称包含某关键字的所有岗位平均月薪
  3. 数据库中Schema和Database有什么区别
  4. ping脚本
  5. NLPIR分词工具的使用(java环境下)
  6. SpringMVC java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name
  7. MySQL默认数据库
  8. Java并发——同步容器与并发容器
  9. POJ 1142 质因数分解
  10. git merge,rebase和*(no branch)
  11. query返回值
  12. leetcode算法: Find Bottom Left Tree Value
  13. 新手篇丨Python任意网段Web端口信息探测工具
  14. JAVA 8 主要新特性 ----------------(七)新时间日期 API -----LocalDateTime
  15. css 禁止选中文本
  16. HttpWebResponse 解压gzip、deflate压缩
  17. 论文阅读笔记三十二:YOLOv3: An Incremental Improvement
  18. 在使用Java8并行流时的问题分析
  19. java自动装箱的一个例子
  20. [十二省联考2019]异或粽子 (可持久化01tire 堆)

热门文章

  1. Android零基础入门第87节:Fragment添加、删除、替换
  2. 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)
  3. 一个 Qt 显示图片的控件(继承QWidget,使用QPixmap记录图像,最后在paintEvent进行绘制,可缩放)
  4. QSettings 用法总结(很好用)
  5. Windows窗体原理及控件WM_DRAWITEM和子类化重绘演示文件
  6. 测试 Components 与 Controls 的区别(嵌套在Panel上的Edit,依然是Form1的Component)
  7. NPOI 超简单的导出导入
  8. ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
  9. SpringBoot整合Redis注意的一些问题
  10. java关键字-interface