UVA 297-Quadtrees

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值