博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 四叉树
阅读量:4653 次
发布时间:2019-06-09

本文共 1296 字,大约阅读时间需要 4 分钟。

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=233

参考了刘汝佳的算法,写得太妙了。

因为最多是1024块,所以每行每列最多是32,利用先序遍历,一旦是'p'时,就访问第1块,如果第一块内还有细分,则继续递归下去。然后继续依次访问第2,3,4块空间。

1 #include
2 #include
3 using namespace std; 4 5 const int len = 32; 6 const int maxn = 1024 + 10; 7 char s[maxn]; 8 char buf[maxn][maxn]; 9 int number;10 11 void solve(char *s, int &p,int r,int c,int w)12 {13 char q = s[p++];14 if (q == 'p')15 {16 solve(s, p, r, c + w / 2, w / 2);17 solve(s, p, r, c, w / 2);18 solve(s, p, r + w / 2, c, w / 2);19 solve(s, p, r + w / 2, c + w / 2, w / 2);20 }21 else if (q=='f')22 for (int i = r; i < r + w;i++)23 for (int j = c; j < c + w;j++)24 if (buf[i][j] == 0)25 {26 buf[i][j] = 1;27 number++;28 }29 }30 31 int main()32 {33 int t;34 cin >> t;35 while (t--)36 {37 memset(buf, 0, sizeof(buf));38 number = 0;39 cin >> s;40 int p = 0;41 solve(s,p,0,0,len);42 cin >> s;43 p = 0;44 solve(s,p,0,0,len);45 cout << "There are " << number << " black pixels." << endl;46 }47 return 0;48 }

 

转载于:https://www.cnblogs.com/zyb993963526/p/6181101.html

你可能感兴趣的文章
DataPipeline的增量数据支持回滚功能
查看>>
工厂模式之简单工厂案例
查看>>
SAP技术工作
查看>>
Java: Difference between ArrayList and LinkedList
查看>>
LeetCode Delete Operation for Two Strings
查看>>
[SDOI2014]重建
查看>>
[AH2017/HNOI2017]礼物
查看>>
gated pixelCNN。
查看>>
[题解]CQOI2012 T1 编号 number
查看>>
python的函数
查看>>
C# GUID的使用
查看>>
2D物体一直朝向某个2D物体(LookAt2D)
查看>>
面向对象编程里面的继承
查看>>
Handling duplicate form submission in Spring MVC
查看>>
Navicat 或者Java的JDBC通过SSH Tunnel连接MySQL数据库
查看>>
Android studio怎么去掉应用的标题栏
查看>>
[Cocos2D-X官方文档:解读CCArray类]
查看>>
为什么重写equals()方法就必须重写hashCode()方法
查看>>
深度优先搜索和广度优先搜索
查看>>
jquery有缝滚动
查看>>