四分树 (Quadtrees UVA - 297)

Posted secoding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四分树 (Quadtrees UVA - 297)相关的知识,希望对你有一定的参考价值。

题目描述:

原题:https://vjudge.net/problem/UVA-297

技术分享图片

题目思路:

1.依旧是一波DFS建树 //矩阵实现

2.建树过程用1.0来填充表示像素

 

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 const int maxn = 1024 + 5;
 6 const int len = 32 ;
 7 int tree[len][len],pcount;
 8 char str[maxn];
 9 
10 void buildtree(char* str,int& pos,int r,int c,int w)//用矩阵来实现四分树 
11 {
12     char ch = str[pos++] ;
13     if(ch == p)
14     {
15         buildtree(str, pos, r,     c+w/2, w/2); // 这个树的第一个结点 
16         buildtree(str, pos, r,     c    , w/2); // 2
17         buildtree(str, pos, r+w/2, c    , w/2); // 3
18         buildtree(str, pos, r+w/2, c+w/2, w/2); // 4
19     }
20     else if(ch == f) //填像素并统计 ==0说明没填过 
21     {
22         for(int i = r; i < r+w; i++)
23               for(int j = c; j < c+w; j++)
24                    if(tree[i][j] == 0) { tree[i][j] = 1; pcount++; }
25     }    
26 }
27 
28 int main(int argc, char *argv[])
29 {
30     int t ;
31     cin >> t; 
32     while(t--)
33     {
34         memset(tree,0,sizeof(tree)) ;
35         pcount = 0 ;
36         for(int i = 0;i < 2; i++)
37         {
38             cin >> str ;
39             int pos = 0;
40             buildtree(str,pos,0,0,len) ;    
41         } 
42         cout << "There are "<< pcount <<" black pixels." << endl ;
43     } 
44     return 0;
45 }

 

以上是关于四分树 (Quadtrees UVA - 297)的主要内容,如果未能解决你的问题,请参考以下文章

UVA297:Quadtrees(四分树)

Quadtrees UVA - 297

Uva 297 四分树

四分树- UVa 297

UVa 806 四分树

四分树(Quadtrees)