您的位置:首页 > 其它

UVA 297 - Quadtrees

2014-09-29 15:34 381 查看
题目大意: 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: