四分樹 (Quadtrees UVA - 297)
阿新 • • 發佈:2018-08-26
std [] 矩陣 amp dfs alt con build 過程
題目描述:
原題: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 voidbuildtree(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); // 318 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)