您的位置:首页 > 其它

UVA297建立完全四叉树统计叶子节点

2015-08-25 16:06 459 查看
和线段树的原理一样,逐层递归去建树,然后统计叶子节点就可以了。

当时自己想的是可不可以一边建树一边统计黑点的数目,好像不是很可行,或者说自己太笨,

没想到怎么写。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<string>
#include<cctype>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<ctime>
#include<algorithm>
#include<sstream>
#define LL long long
using namespace std;
int n;
int sum=0;
const int total=1365;
const int N=1400;
int t1
,t2
;
void dye(int r,int *t)
{
if(r>total) return;
t[r]=1;
dye(4*r-2,t);
dye(4*r-1,t);
dye(4*r,t);
dye(4*r+1,t);
}
void create_tree(int r,int *t)
{
char ch;
if(r>total) return;
cin>>ch;
if(ch=='e') return;
else if(ch=='p')
{
create_tree(4*r-2,t);create_tree(4*r-1,t);
create_tree(4*r,t);create_tree(4*r+1,t);
}
else
dye(r,t);
}
int main()
{
cin>>n;
while(n--)
{
memset(t1,0,sizeof(t1));
memset(t2,0,sizeof(t2));
int r=1;
create_tree(r,t1); getchar();
r=1;
create_tree(r,t2); getchar();
int sum=0;
for(int i=342;i<=total;i++) if(t1[i]|t2[i]) sum++;
printf("There are %d black pixels.\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: