UVA 297-Quadtrees

来源:互联网 发布:战网客户端 mac 编辑:程序博客网 时间:2024/05/22 12:11

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;}
0 0
原创粉丝点击