UVA297建立完全四叉树统计叶子节点
2015-08-25 16:06
459 查看
和线段树的原理一样,逐层递归去建树,然后统计叶子节点就可以了。
当时自己想的是可不可以一边建树一边统计黑点的数目,好像不是很可行,或者说自己太笨,
没想到怎么写。
当时自己想的是可不可以一边建树一边统计黑点的数目,好像不是很可行,或者说自己太笨,
没想到怎么写。
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<string> #include<cctype> #include<cmath> #include<map> #include<set> #include<vector> #include<queue> #include<stack> #include<ctime> #include<algorithm> #include<sstream> #define LL long long using namespace std; int n; int sum=0; const int total=1365; const int N=1400; int t1 ,t2 ; void dye(int r,int *t) { if(r>total) return; t[r]=1; dye(4*r-2,t); dye(4*r-1,t); dye(4*r,t); dye(4*r+1,t); } void create_tree(int r,int *t) { char ch; if(r>total) return; cin>>ch; if(ch=='e') return; else if(ch=='p') { create_tree(4*r-2,t);create_tree(4*r-1,t); create_tree(4*r,t);create_tree(4*r+1,t); } else dye(r,t); } int main() { cin>>n; while(n--) { memset(t1,0,sizeof(t1)); memset(t2,0,sizeof(t2)); int r=1; create_tree(r,t1); getchar(); r=1; create_tree(r,t2); getchar(); int sum=0; for(int i=342;i<=total;i++) if(t1[i]|t2[i]) sum++; printf("There are %d black pixels.\n",sum); } return 0; }
相关文章推荐
- 原码, 反码, 补码 详解
- HDU-2189 悼念512汶川大地震遇难同胞――来生一起走
- bootstrap 用法小结
- hdu1525 博弈
- matlab_数据拟合
- Nagios自己编写监控磁盘脚本check_disk
- word文档插入方框加勾
- fileURLWithPath:和URLWithString:的区别
- HDU 2489 Minimal Ratio Tree(枚举组合+最小生成树)
- 工作体会之系统对接
- 在eclipse中配置maven项目
- Item 10:赋值运算符要返回自己的引用 Effective C++笔记
- Item 9:在析构/构造时不要调用虚函数 Effective C++笔记
- 规则引擎 visualrules 开发基础教程【连载2】-- 安装篇
- PAT 1066. Root of AVL Tree (25)
- 用Python操作Mysql
- MFC视频教程(孙鑫)学习笔记1-Windows程序内部运行原理
- rails nginx passenger postgre 在ubuntu部署
- ios获取左右眼图片景深图
- windows mysql 自动备份的几种方法