您的位置:首页 > 其它

四分树,紫书P160UVa297

2017-09-17 20:48 246 查看
本题虽然是非二叉树,但考察的实质依旧是DFS递归构建树的方法。

本题终于是自己敲的码,跟刘的解题思路一模一样,但是个人感觉自己只使用了一个数组,较为精简了一点。其中本题在写dfs函数的时候参数传递比较容易出错,其他的都算比较简单。至于两个图像的累加,数组标记即可。

// UVa297 Quadtrees
// scienceZ
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

int arr[1024+20];
int n, sum;

void dfs(int a, int n){
char t;
int k = n - a + 1;
while((t=getchar())=='\n');
if(t == 'p'){
dfs(a, a+k/4-1);
dfs(a+k/4, a+k/2-1);
dfs(a+k/2, a+(3*k/4)-1);
dfs(a+(3*k/4), a+k-1);
}else if(t == 'f' )for (int i = a; i<=n; i++)if(!arr[i]){
arr[i] = 1;
sum++;
}
}

int main()
{
cin >> n;
while(n--){
sum = 0;
memset(arr, 0, sizeof(arr));
dfs(1, 1024);
dfs(1, 1024);
printf("There are %d black pixels.\n", sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: