紫書UVa297

weixin_46273288發表於2020-12-12

在這裡插入圖片描述

#include <vector>
#include <map>
#include<algorithm>
#include<cmath>
#include<set>
#include<cstdio>
#include <sstream>
#include <string>
#include<iostream>
#include<iomanip>
#include<stack>
#include<utility>
#include<unordered_map>
#include<queue>
#include<cstring>
#include <list>
#include<deque>
using namespace std;
const int maxn = 1024 + 10;
const int len = 32;
char s[maxn];
int buf[len][len], cnt;
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);
		draw(s, p, r, c, w / 2);
		draw(s, p, r + w / 2, c, w / 2);
		draw(s, p, r + w / 2, c + w / 2, w / 2);
	}
	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[i][j] = 1; ++cnt;
				}
			}
		}
	}
}
int main()
{
	int T;
	scanf("%d", &T);
	while (T--)
	{
		memset(buf, 0, sizeof(buf));
		cnt = 0;
		for (int i = 0; i < 2; ++i)
		{
			scanf("%s", s);
			int p=0;
			draw(s, p, 0, 0, len);
		}
		printf("There are %d black pixels.\n", cnt);
	}
}

相關文章