题目大意: 32*32像素的正方形图片,每个像素非黑即白 , 用4叉树表示,’p‘代表当前块类颜色不纯,'f'代表纯黑,‘e’代表纯白
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int size = 1024;
const int str_size = 10000;
char a[size] , b[size];
char str1[str_size] , str2[str_size];
void build(char *start , char *finish , char *v , int x , int y)
{
if(start >= finish) return;
if(*start == 'f') memset(v + x , 1 , (y-x));
else if(*start == 'e') memset(v + x , 0 , (y-x));
else{
char *pre = start + 1;
char *cur = start + 1;
for(int i = 0 ; i < 4 ; ++i)
{
int p = 1 , q = 0;
while(p > q)
{
if(*cur == 'p') p += 3;
else ++q;
++cur;
}
build(pre , cur , v , x + i * (y-x) / 4 , x + (i+1) * (y-x) / 4);
pre = cur;
}
}
}
int main()
{
int n;
cin >> n;
for(int i = 0 ; i < n ; ++i)
{
cin >> str1 >> str2;
int len1 = strlen(str1);
int len2 = strlen(str2);
build(str1 , str1 + len1 , a , 0 , 1024);
build(str2 , str2 + len2 , b , 0 , 1024);
int cnt = 0;
for(int i = 0 ; i < 1024 ; ++i)
{
if(a[i] || b[i]) ++cnt;
}
cout << "There are " << cnt << " black pixels." << endl;
}
return 0;
}