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;
    }




  • 相关阅读:
    TF-IDF
    3.路径模板两张表设计
    6.订单支付回调接口
    5.创建订单并生成支付链接接口
    5.使用ES代替whoosh全文检索
    4.docker基本使用
    3.ubuntu安装docker
    2.课程全文检索接口
    1.搜索引擎工作原理
    7.视频播放页面接口开发
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591561.html
Copyright © 2011-2022 走看看