您的位置:首页 > 其它

UVA 297-Quadtrees

2016-08-09 16:41 316 查看

UVA 297-Quadtrees

题目大意:图中一个正方形一共可以看成1024个小正方形,按照图例编区域,给俩个字符串,遇p表示分四块,遇e表示不处理,遇f表示全部涂黑,求经过俩个字符串操作后最后有多少个黑的小正方形

解题思路:按照题意递归分割涂黑即可

#include <iostream>
#include <string>
#include <sstream>
#include <stdio.h>
using namespace std;
void read(int x, int y, char *m) {
char c = getchar();
if(c == 'p') {
read(x, x+(y-x+1)/4-1, m);
read(x+(y-x+1)/4, x+(y-x+1)/2-1, m);
read(x+(y-x+1)/2, x+3*(y-x+1)/4-1, m);
read(x+3*(y-x+1)/4, y, m);
}
else if(c == 'f')
for(int i = x; i <= y; i++) {
m[i] = 'f';
}
}

int count(char *a, char *b) {
int s = 0;
for(int i = 1; i <= 1024; i++) {
if(a[i] == 'f' || b[i] == 'f')
s++;
}
return s;
}
int main() {
int n;
cin >> n;
while(n--) {
char a[1025] = {'e'}, b[1025] = {'e'};
getchar();
read(1, 1024, a);
getchar();
read(1, 1024, b);
int m = count(a, b);
printf("There are %d black pixels.\n", m);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva 递归