UVA 297 Quadtrees (4叉树)

原创 2013年07月07日 13:29:43

~~~题目链接~~


题目大意:根据题目的要求可以把矩形(32*32)转换成4叉树, 现在给出2个矩形, 2个矩形相加求出第三个矩形,然后求第三个矩形黑色像素所占的面积。 



code:


#include <iostream>
using namespace std;




typedef struct node
{
    char ch;
    struct node *nt[4];
}Node;


int ans = 0;


void build(int &cur, Node *r, string &s)
{
    int flag = 0;
    r->ch = s[cur++];
    for(int j = 0; j<4 && cur<s.size(); j++)
    {
        r->nt[j] = new Node;
        if(s[cur] == 'p')
        {
            build(cur, r->nt[j], s);
            continue;
        }
        r->nt[j]->ch = s[cur++];
    }
}




void query(Node *r1, Node *r2, int cur)
{
    if(r1->ch == 'p' && r2->ch == 'p')
        for(int i = 0; i<4; i++)
            query(r1->nt[i], r2->nt[i], cur*2);
    else if(r1->ch == 'f' || r2->ch == 'f')
        ans += (32/cur)*(32/cur);
    else if(r1->ch == 'e' && r2->ch == 'p')
        for(int i = 0; i<4; i++)
            query(r1, r2->nt[i], cur*2);
    else if(r1->ch == 'p' && r2->ch == 'e')
        for(int i = 0; i<4; i++)
            query(r1->nt[i], r2, cur*2);
}


int main()
{
    int t = 0, cur = 0;
    string s1, s2;
    cin>>t;
    while(t--)
    {
        cin>>s1>>s2;
        ans = 0;
        Node *r1 = new Node;
        Node *r2 = new Node;
        cur = 0;
        build(cur, r1, s1);
        cur = 0;
        build(cur, r2, s2);
        query(r1, r2, 1);
        cout<<"There are "<<ans<<" black pixels."<<endl;
    }
    return 0;
}












uva297 Quadtrees (树的重建)

题意:一幅图有1024个点, 可以对图平均分成4块, 并且子图也可以再往下分, 直到一个子图表示一个点。 f表示这块子图填满, p表示它还有4个子图, e表示没有子图(当然啦, 它也没有填满)。 给定...
  • MistKafka
  • MistKafka
  • 2013年07月26日 21:34
  • 1456

UVa 297 Quadtrees

四分树的一个不一样的思路——单纯的递归实现 #include int board[32][32]; char str[20000]; void giveblack(int length, int...
  • littleorange6
  • littleorange6
  • 2015年09月30日 14:20
  • 267

UVa 297 - Quadtrees

题目:利用四叉树处理图片,给你两张黑白图片的四叉树,问两张图片叠加后黑色的面积。 分析:搜索、数据结构。把图片分成1024块1*1的小正方形,建立一位数组记录对应小正方形的颜色。         ...
  • mobius_strip
  • mobius_strip
  • 2013年10月15日 01:44
  • 2666

UVa 297 Quadtrees 递归

#include #include #include using namespace std; const int maxn = 1024; const int len = 32; char...
  • EventQueue
  • EventQueue
  • 2016年05月17日 10:20
  • 197

UVA 297 - Quadtrees(建树)

比较麻烦做了一下午,主要是先建好这两棵树,然后在创建最后的树时顺便求出节点的面积。收获挺大的! #include #include #include using namespace std; ...
  • u014682977
  • u014682977
  • 2015年05月24日 15:41
  • 322

Quadtrees UVA - 297

问题类型:四分树,DFS 03pie’s solution for [UVA-297]: 问题链接 #include #include const int len=32; const in...
  • qq_34677945
  • qq_34677945
  • 2017年04月19日 15:53
  • 150

uva 297 - Quadtrees

四叉树,p代表后面4个字符代表下面四个子结点的状态,f则为黑,e则为白。 题目中说深度不超过5层,不知道算了根结点没,我觉得按照32*32应该是6层。 我的方法是不管如果是f和e则将它下面的结点(...
  • u013791747
  • u013791747
  • 2014年03月01日 09:20
  • 444

UVa 297 Quadtrees -SilverN

A quadtree is a representation format used to encode images. The fundamental idea behind the quadtre...
  • SBS2000
  • SBS2000
  • 2016年05月02日 16:45
  • 90

UVa 297 - Quadtrees解题报告

题意:给定两个字符串,字符p对应建立子树,字符e为白色,f为黑色对于不同层黑点f对应不同的值,最上面为1024下来为每个子树256.....,这样建立两颗四叉树,计算两颗树相加后的黑点f对应的值,注意...
  • u012411003
  • u012411003
  • 2014年02月16日 12:32
  • 487

UVA 297 Quadtrees

今天终于把这个题思路理解透,做出来了,代码是学习点击打开链接的 ,主要是递归,和||运算符的运用,  题目连接http://uva.onlinejudge.org/index.php?option=...
  • anqier0468
  • anqier0468
  • 2013年04月19日 15:35
  • 462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 297 Quadtrees (4叉树)
举报原因:
原因补充:

(最多只允许输入30个字)