297 - Quadtrees
2012-09-13 17:48
148 查看
描述:这道题就是求像素相加问题,给出了两个四叉树的先序输出,构建完这两个四叉树再合并,然后计算像素结果就ok了,注意,像素开始值是1024,也就是说输出如果大于1024就程序错了,关键是能够合并两个四叉树 #include <iostream> #include <cstdio> #include <cstring> using namespace std; struct Tnode { char v; struct Tnode *first,*second,*third,*fourth; Tnode () { v=0; first=second=third=fourth=NULL; } }; int len; Tnode *creat_two_tree(char *b)//创建四叉树 { Tnode *tree=new Tnode; if(len<strlen(b)) { tree->v=b[len]; if(b[len]=='p') { len++;//注意len++有四个,不是一个 tree->first=creat_two_tree(b); len++; tree->second=creat_two_tree(b); len++; tree->third=creat_two_tree(b); len++; tree->fourth=creat_two_tree(b); } } return tree; } Tnode *creat_new_tree(Tnode *b, Tnode *c)//合并四叉树 { Tnode *tree=new Tnode; if(b->v=='f'||c->v=='f')tree->v='f'; else if(b->v=='e'&&c->v=='e')tree->v='e'; else { tree->v='p'; if(b->v=='p'&&c->v=='p') { tree->first=creat_new_tree(b->first,c->first); tree->second=creat_new_tree(b->second,c->second); tree->third=creat_new_tree(b->third,c->third); tree->fourth=creat_new_tree(b->fourth,c->fourth); } else if(b->v=='p'&&c->v=='e') { tree->first=b->first; tree->second=b->second; tree->third=b->third; tree->fourth=b->fourth; } else { tree->first=c->first; tree->second=c->second; tree->third=c->third; tree->fourth=c->fourth; } } return tree; } void sum(Tnode *tree,int count)//计算像素值和 { if(tree) { if(tree->v=='f')len+=count; count/=4; sum(tree->first,count); sum(tree->second,count); sum(tree->third,count); sum(tree->fourth,count); } } int main() { //freopen("a.txt","r",stdin); int n; char s1[10010],s2[10010]; scanf("%d",&n); while(n--) { memset(s1,0,sizeof(s1)); memset(s2,0,sizeof(s2)); scanf("%s%s",s1,s2); len=0; Tnode *root1=creat_two_tree(s1); len=0; Tnode *root2=creat_two_tree(s2); Tnode *root=creat_new_tree(root1,root2); len=0; sum(root,1024); printf("There are %d black pixels.\n",len); } return 0; }
相关文章推荐
- 297 - Quadtrees*****
- 297 - Quadtrees (四叉树)
- uva 297 quadtrees——yhx
- 例题6-11 四分树(Quadtrees, UVa 297)
- UVA 297 Quadtrees
- UVA 297 Quadtrees(四叉树建树、合并与遍历)
- uva 297 quadtrees——yhx
- 297 - Quadtrees (UVa)
- UVA 297 - Quadtrees
- UVA-297 Quadtrees (四分树)
- 例题6-11 UVa297 Quadtrees(四分树)
- UVa297 例题6-11 四分树(Quadtrees)
- UVa 297 - Quadtrees
- uva 297 Quadtrees
- 297 - Quadtrees
- dfs uva-297-Quadtrees
- UVa 297 - Quadtrees解题报告
- UVA 297 - Quadtrees
- UVA297 Quadtrees(递归!!!)
- UVa 297 Quadtrees