zoukankan      html  css  js  c++  java
  • Uva



    给了先序遍历就可以确定整个数,只需要递归的把整个图画出来就可以了,把两个图像画到同一张纸上,画的同时统计黑像素的个数,画完结果就有了。

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    const int len = 32;
    const int maxn = 1034;
    char s[maxn];
    int buf[len][len], cnt;
    
    // 在buf中绘制
    void draw(const char* s, int& p, int r, int c, int w) {
    	char ch = s[p++];
    	if (ch == 'p') {
    		draw(s, p, r, c + w / 2, w / 2); // 画1区域
    		draw(s, p, r, c, w / 2); // 画2区域
    		draw(s, p, r + w / 2, c, w / 2); // 画3区域
    		draw(s, p, r + w / 2, c + w / 2, w / 2); // 画4区域
    	}
    	else if (ch == 'f'){
    		for (int i = r; i < r + w; i++) {
    			for (int j = c; j < c + w; j++) {
    				if (buf[i][j] == 0) { // 如果画了黑像素,就不要再画了,这个两个图在一张纸buf上画
    					buf[i][j] = 1;
    					cnt++; // 计算黑像素点的个数
    				}
    			}
    		}
    	}
    }
    
    int main()
    {
    	int T;
    	cin >> T;
    	while (T--) {
    		memset(buf, 0, sizeof(buf)); // 清空画图区域
    		cnt = 0; // 记得把黑像素点的个数清空
    		for (int i = 0; i < 2; i++) {
    			cin >> s;
    			int p = 0;
    			// 把两个图画到同一个buf中,这样就相当于已经加起来了
    			draw(s, p, 0, 0, len);
    		}
    		printf("There are %d black pixels.
    ", cnt);
    	}
    
    	return 0;
    }




  • 相关阅读:
    Docker从12升级到17ce
    镜像清理和删除
    flask-session 在redis中存储session
    linux后台运行python程序 nohup
    flask 自动切换环境
    Linux SSH登录很慢的解决方法
    docker-compose docker启动工具,容器互联
    为什么企业需要IT资产管理
    sql 中取整,四舍五入取整,向下取整,向上取整。
    sqlalchemy 获取表结构。
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591561.html
Copyright © 2011-2022 走看看