UVA297 四分树 Quadtrees

多叉树的递归遍历,和二叉树不同的是,多叉树只有先序遍历,以及一个好的编程习惯是很重要的,题不算太难但是改代码改了太久

#include <bits/stdc++.h>

#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;

int cur, ans;
int rec[35][35];
string s1, s2;

void dfs(int level, int r, int c, string s) {
    if (s[cur] == 'f') {
        for (int i = r; i < r + (1 << (6 - level)); i++) {
            for (int j = c; j < c + (1 << (6 - level)); j++) {
                if (!rec[i][j]) { rec[i][j] = 1; ans++; }
            }
        }
        cur++;
        return;
    } else if (s[cur] == 'e') {
        cur++;
        return;
    }
    cur++;
    dfs(level + 1, r, c + (1 << (5 - level)), s);
    dfs(level + 1, r, c, s);
    dfs(level + 1, r + (1 << (5 - level)), c, s);
    dfs(level + 1, r + (1 << (5 - level)), c + (1 << (5 - level)), s);
}

int main() {
    int n;
    cin >> n;
    while (n--) {
        cin >> s1 >> s2;
        ans = 0;
        memset(rec, 0, sizeof(rec));
        cur = 0; dfs(1, 0, 0, s1);
        cur = 0; dfs(1, 0, 0, s2);
        printf("There are %d black pixels.\n", ans);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值