zoukankan      html  css  js  c++  java
  • UVa 297 (四分树 递归) Quadtrees

    题意:

    有一个32×32像素的黑白图片,用四分树来表示。树的四个节点从左到右分别对应右上、左上、左下、右下的四个小正方区域。然后用递归的形式给出一个字符串代表一个图像,f(full)代表该节点是黑色的,e(empty)代表该节点是白色的,p表示灰色节点,即它还有子节点。

    每组数据给出两幅图,求两幅图黑色像素合并以后的黑色像素的个数。

    分析:

    字符串是递归给出的,那么就递归地处理。遇到字符'p'就递归进去,遇到黑色色的就统计。

    递归函数的参数有个是引用,标记读到字符串是哪一位了,简化了程序。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int len = 32;
     5 const int maxn = 1024 + 10;
     6 char s[maxn];
     7 int buf[len][len], cnt;
     8 
     9 void draw(const char* s, int& p, int r, int c, int w)
    10 {
    11     char ch = s[p++];
    12     if(ch == 'p')
    13     {
    14         draw(s, p, r, c+w/2, w/2);
    15         draw(s, p, r, c, w/2);
    16         draw(s, p, r+w/2, c, w/2);
    17         draw(s, p, r+w/2, c+w/2, w/2);
    18     }
    19     else if(ch == 'f')
    20     {
    21         int i, j;
    22         for(i = r; i < r+w; ++i)
    23             for(j = c; j < c+w; ++j)
    24                 if(buf[i][j] == 0)
    25                 {
    26                     buf[i][j] = 1;
    27                     cnt++;
    28                 }
    29     }
    30 }
    31 
    32 int main(void)
    33 {
    34     //freopen("in.txt", "r", stdin);
    35 
    36     int T;
    37     scanf("%d", &T);
    38     while(T--)
    39     {
    40         memset(buf, 0, sizeof(0));
    41         cnt = 0;
    42         int i;
    43         for(i = 0; i < 2; ++i)
    44         {
    45             scanf("%s", s);
    46             int p = 0;
    47             draw(s, p, 0, 0, len);
    48         }
    49     }
    50     printf("There are %d black pixels.
    ", cnt);
    51 
    52     return 0;
    53 }
    代码君
  • 相关阅读:
    Linux系统启动过程
    Window磁盘错误修复chkdsk
    迅雷精简版-纪念走过的时光
    NTP国内时钟服务器
    完完全全彻底删除VMware_Workstation
    Linux默认日志含义
    java 生成泛型的参数的实例 T t=new T()
    dubbo源码解析-zookeeper创建节点
    dubbo服务端,dubbo客户端,注册中心(zk)之间的心跳
    Dubbo阅读笔记——高级功能
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3986456.html
Copyright © 2011-2022 走看看