四分樹
阿新 • • 發佈:2017-09-28
color bsp blog size ons sca ack 黑白 printf
我們可以用四分樹來表示一個黑白圖像,以根結點表示整幅圖像,然後將行列各兩等分,從左到右以4各子節點表示。F表示黑色,E表示白色。
代碼如下:
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 charch = s[p++]; 11 if (ch == ‘p‘) { 12 draw(s, p, r, c + w / 2, w / 2); 13 draw(s, p, r, c, w / 2); 14 draw(s, p, r + w / 2, c, w / 2); 15 draw(s, p, r + w / 2, c + w / 2, w / 2); 16 } 17 else if (ch == ‘f‘) { 18 for (int i = r; i < r + w; i++) 19 for(int j = c; j < c + w; j++) 20 if (buf[i][j] == 0) { 21 buf[i][j] = 1; cnt++; 22 } 23 } 24 } 25 26 int main() { 27 int T; 28 scanf_s("%d", &T); 29 while (T--) { 30 memset(buf, 0, sizeof(buf)); 31 cnt = 0; 32 for (int i = 0; i < 2; i++) { 33 scanf_s("%s", s); 34 int p = 0; 35 draw(s, p, 0, 0, len); 36 } 37 printf("There are %d black pixels .\n", cnt); 38 } 39 return 0; 40 }
四分樹