例题6-11 UVa297 Quadtrees(四分树)
2016-02-12 20:13
423 查看
题意:
看白书
要点:
非二叉树,因为四分树比较特殊(有中间结点这种东西),所以给出先序遍历就可以确定整棵树(因为如果要向下必须要用中间结点,而且中间结点本身没有值),所以只要模拟一个方块的分割就行
看白书
要点:
非二叉树,因为四分树比较特殊(有中间结点这种东西),所以给出先序遍历就可以确定整棵树(因为如果要向下必须要用中间结点,而且中间结点本身没有值),所以只要模拟一个方块的分割就行
#include<stdio.h> #include<stdlib.h> #include<string.h> const int len = 32; const int maxn = 1024 + 10; char s[maxn]; int buff[len][len], cnt; void draw(char s[], int &p, int r, int c, int w)//w代表边长,r,c代表小方块左上角坐标 { //p此时是传递地址会随函数调用而改变 char ch = s[p++]; if (ch == 'p') { draw(s, p, r, c, w / 2); //递归调用,此时小方块坐标及边长都会改变 draw(s, p, r, c + w / 2, w / 2); draw(s, p, r + w / 2, c, w / 2); draw(s, p, r + w / 2, c + w / 2, w / 2); } else if (ch == 'f') //黑色充满的情况 { for (int i = r; i < r + w; i++) for (int j = c; j < c + w;j++) if (buff[i][j] == 0) { buff[i][j] = 1; cnt++; } } } int main() { int t; scanf("%d", &t); while (t--) { memset(buff, 0, sizeof(buff)); cnt = 0; for (int i = 0; i < 2; i++) { scanf("%s", s); int p = 0; draw(s, p, 0, 0, len); } printf("There are %d black pixels.\n", cnt); } return 0; }
相关文章推荐
- [bzoj2286] [Sdoi2011消耗战
- Windows平台配置免安装的MySQL
- 【SSH框架】--Hibernate持久化对象的三种状态
- 说说这些年做的云计算和大数据项目
- Codeforces edu 7 D. Optimal Number Permutation 构造
- 正则表达式之字符的跨度
- Android使用setCustomTitle()方法自定义对话框标题
- Notepad++自动格式化Java代码
- FilterDispatcher已被标注为过时解决办法 >>> FilterDispatcher <<< is deprecated!
- poj 3666 Making the Grade (有序序列,离散化dp)
- Codeforces 611D:New Year and Ancient Prophecy DP 分块记录最后一个
- 在docker上centos7 编译安装php7
- WEB架构师成长之路之一-走正确的路
- 孤儿进程与僵尸进程_笔记
- Python接入天气预报api
- [bzoj3611][Heoi2014]大工程
- 莫队算法(最小曼哈顿生成树或者分块处理)
- 【IOI2001】【poj1195】Mobile phones(二维树状数组)
- 国内 IT 相关网站
- MySQL数据库使用命令小结