uva 297 Quadtrees
来源:互联网 发布:iis7端口设置 编辑:程序博客网 时间:2024/09/21 08:59
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=4&page=show_problem&problem=233
题意是建立两颗树,让后将两棵树叠加到一起。每个结点如果值如果是e或者f就没有子结点,如果值是p,就有四个子结点。
代码写的很挫,每个结点的子结点可以用数组表示。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<map>#include<queue>#include<stack>#include<vector>#include<ctype.h>#include<algorithm>#include<string>#define PI acos(-1.0)#define maxn 1005#define INF 1<<25#define MAX 0x7ffffffftypedef long long ll;using namespace std;char ss[maxn];struct Node{ char v; Node *c1; Node *c2; Node *c3; Node *c4;};Node *first;Node *second;Node *ans;int top;int aa;int Buildtree(Node *&node){ node=(Node*)malloc(sizeof(Node)); node->v=ss[top++]; if(node->v=='p') { Buildtree(node->c1); Buildtree(node->c2); Buildtree(node->c3); Buildtree(node->c4); } return 0;}int Copytree(Node *&a,Node *&b){ b=(Node*)malloc(sizeof(Node)); b->v=a->v; if(b->v=='p') { Copytree(a->c1,b->c1); Copytree(a->c2,b->c2); Copytree(a->c3,b->c3); Copytree(a->c4,b->c4); }}int Addtree(Node *&a,Node *&b,Node *&c){ c=(Node*)malloc(sizeof(Node)); if(a->v=='f'||b->v=='f') c->v='f'; else if(a->v=='e'&&b->v=='e') c->v='e'; else if(a->v=='p'&&b->v=='e') { c->v='p'; Copytree(a->c1,c->c1); Copytree(a->c2,c->c2); Copytree(a->c3,c->c3); Copytree(a->c4,c->c4); } else if(a->v=='e'&&b->v=='p') { c->v='p'; Copytree(b->c1,c->c1); Copytree(b->c2,c->c2); Copytree(b->c3,c->c3); Copytree(b->c4,c->c4); } else { c->v='p'; Addtree(a->c1,b->c1,c->c1); Addtree(a->c2,b->c2,c->c2); Addtree(a->c3,b->c3,c->c3); Addtree(a->c4,b->c4,c->c4); }}int dfs(Node *&node){ if(node->v=='f') { aa+=1024/top; } else if(node->v=='e') { return 0; } else if(node->v=='p') { top*=4; dfs(node->c1); dfs(node->c2); dfs(node->c3); dfs(node->c4); top/=4; }}int main(){ int tot; scanf("%d",&tot); for(int i=0; i<tot; i++) { aa=0; scanf("%s",ss); top=0; Buildtree(first); scanf("%s",ss); top=0; Buildtree(second); Addtree(first,second,ans); top=1; dfs(ans); printf("There are %d black pixels.\n",aa); }}
0 0
- uva 297 - Quadtrees
- uva 297 Quadtrees
- uva 297 - Quadtrees
- Uva 297 - Quadtrees
- UVA 297 - Quadtrees
- uva 297 Quadtrees
- UVA 297 - Quadtrees
- dfs uva-297-Quadtrees
- UVa 297 - Quadtrees
- UVA 297 Quadtrees
- uva-297 Quadtrees
- uva 297 Quadtrees
- UVa 297 - Quadtrees
- 297 - Quadtrees (UVa)
- uva 297 Quadtrees
- UVa 297 - Quadtrees
- UVA 297 - Quadtrees
- uva 297 Quadtrees
- Hive学习笔记
- (二)工厂方法模式
- 第9天 二维数组中查找指定数字
- 我的书,我的学习路程
- 1.2、Activity的状态保存
- uva 297 Quadtrees
- 单链表实现队列
- CUGB图论专场:F - Cow Marathon(邻接表+dfs的最长继承)
- RSS阅读器的实现
- hdu 1569 最大流建图
- nfs:server is not responding,still tryin
- USB驱动程序
- 单例模式的常见应用场景
- Winform里有关Combobox的一些操作