UVa 297

#include <cstdio>
#include <cstring>

const int len = 32;
const int maxn = 1024 + 10;
char s[maxn];
int buf[len][len], cnt;

void draw(const char* s, int& p, int r, int c, int w)
{
    char ch = s[p++];
    if(ch == ‘p‘)
    {
        draw(s, p, r, c+w/2, w/2);
        draw(s, p, r, c, 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‘)
    {
        int i, j;
        for(i = r; i < r+w; ++i)
            for(j = c; j < c+w; ++j)
                if(buf[i][j] == 0)
                {
                    buf[i][j] = 1;
                    cnt++;
                }
    }
}

int main(void)
{
    //freopen("in.txt", "r", stdin);

    int T;
    scanf("%d", &T);
    while(T--)
    {
        memset(buf, 0, sizeof(0));
        cnt = 0;
        int i;
        for(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;
}
时间: 2024-11-05 02:18:51

UVa 297的相关文章

UVA 297 Quadtrees(四叉树建树、合并与遍历)

<span style="font-size: 18pt; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">K - </span><span style="color: blue; font-size: 18pt; font-family: Arial, Helvetica, sans-serif; background-color

uva 297 - Quadtrees

 Quadtrees  A quadtree is a representation format used to encode images. The fundamental idea behind the quadtree is that any image can be split into four quadrants. Each quadrant may again be split in four sub quadrants, etc. In the quadtree, the im

uva 297(传递闭包 WF 1996)

题意:在一张有向图中输出所有的环. 思路:先用Floyd求传递闭包,然后通过传递闭包建图若是Map[i][j] && Map[j][i]则建一条无向边.然后图中所有的连通分支即为一个环. 代码如下: 1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 201

Quadtrees UVA 297

说说: 先来说说题意,题目给定了一个32*32大小(相当于1024个1*1的小正方形合成)的正方形,如下图所示: 其实每个大正方形可以看成一个树根,它由四个小正方形组成,四个小正方形为孩子.当然,我们可以立即给小正方形上色,黑色或白色,还可以把小正方形再细分成更小的四个正方形,直至正方形的大小为1*1为止.现在题目给你两个字符串,例如: ppeeefpffeefe pefepeefe 其中p表示该节点不是叶子节点,e表示为白色的叶子节点,f为黑色的叶子节点.整个字符串是先序遍历的结果.要求求出两

UVa 297 Quadtrees(四分树)

题意  可以用一个四分图表示一32*32的黑白图像   求两个四分树对应图像相加所得图形黑色部分有多少像素 直接用一个32*32的矩阵表示图  黑色为非0白色为0  递归建图   最后有多少个非零就是答案了 #include<cstdio> #include<cstring> using namespace std; const int L = 32, N = 1050; char s[N]; int ans[L][L], cnt; void draw(char *s, int &

UVA - 297 Quadtrees (四分树)

题意:求两棵四分树合并之后黑色像素的个数. 分析:边建树边统计. #include<cstdio> #include<cstring> #include<cstdlib> #include<cctype> #include<cmath> #include<iostream> #include<sstream> #include<iterator> #include<algorithm> #inclu

uva 297 quadtrees——yhx

Quadtrees  A quadtree is a representation format used to encode images. The fundamental idea behind the quadtree is that any image can be split into four quadrants. Each quadrant may again be split in four sub quadrants, etc. In the quadtree, the ima

UVa 297.Quadtrees【非二叉树之四分树】【7月31】

Quadtrees A quadtree is a representation format used to encode images. The fundamental idea behind the quadtree is that any image can be split into four quadrants. Each quadrant may again be split in four sub quadrants, etc. In the quadtree, the imag

Uva 297 四分树

题意: 有一个大小为32*32的图像, 它可以描述为一颗四分树, 如下图 注意描述顺序为 2 1 3 4 给出两棵四分树的先序遍历, 求两者合并后, 黑色像素的个数. 分析: 因为本题给的树是一颗完全的树, 所以只需要给出先序遍历, 就能确定整棵树. 我们可以建一个32*32的数组模拟涂色的过程, 是一个锻炼递归的好题目, 递归的代码通常也可以写的很简便. 每次确定一个左上角坐标(r,c), 和长度len,就可以把一个矩形区域填充. 最后数一下填充多少个即可. #include <bits/st