例题6-11 四分树(Quadtrees, UVa 297)
来源:互联网 发布:美国知乎 编辑:程序博客网 时间:2024/04/28 21:46
因为是完全树所以可以直接由先序遍历确定整棵树。
第一个节点不用特判。代码简洁好多。。
#include <iostream>#include <string>#include <vector>#include <stack>#include <queue>#include <deque>#include <set>#include <map>#include <algorithm>#include <functional>#include <sstream>#include <utility>#include <cstring>#include <cstdio>#include <cstdlib>#include <ctime>#include <cmath>#include <cctype>#define CLEAR(a, b) memset(a, b, sizeof(a))#define IN() freopen("in.txt", "r", stdin)#define OUT() freopen("out.txt", "w", stdout)#define LL long long#define maxn 10005#define maxm 50#define mod 10007#define INF 100000007#define EPS 1e-7#define PI 3.1415926535898#define N 32using namespace std;//-------------------------CHC------------------------------//char s[maxn];int a[maxm][maxm], idx = 1, ans;const int dirx[] = { 0, 0, 1, 1 }, diry[] = { 0, -1, -1, 0 };void draw(int x, int y, int l) {for (int i = 0; i < l; ++i)for (int j = 0; j < l; ++j)if (a[x + i][y - j] == 0) a[x + i][y - j] = 1, ans++;}void build(int x, int y, int l, char *s) {l >>= 1;for (int i = 0; i < 4; ++i) {if (s[idx] == 'p') {idx++;int a = x + dirx[i] * l, b = y + diry[i] * l;build(a, b, l, s);}else if (s[idx++] == 'f') {int a = x + dirx[i] * l, b = y + diry[i] * l;draw(a, b, l);}}}int main() {IN(); OUT();int T;scanf("%d", &T);while (T--) {CLEAR(a, 0);ans = 0;for (int i = 0; i < 2; ++i) {scanf("%s", s);if (s[0] == 'f') { draw(1, N, N); continue; }if (s[0] == 'e') continue;idx = 1;build(1, N, N, s);}printf("There are %d black pixels.\n", ans);}return 0;}
第一个节点不用特判。代码简洁好多。。
#include <iostream>#include <string>#include <vector>#include <stack>#include <queue>#include <deque>#include <set>#include <map>#include <algorithm>#include <functional>#include <sstream>#include <utility>#include <cstring>#include <cstdio>#include <cstdlib>#include <ctime>#include <cmath>#include <cctype>#define CLEAR(a, b) memset(a, b, sizeof(a))#define IN() freopen("in.txt", "r", stdin)#define OUT() freopen("out.txt", "w", stdout)#define LL long long#define maxn 10005#define maxm 50#define mod 10007#define INF 100000007#define EPS 1e-7#define PI 3.1415926535898#define N 32using namespace std;//-------------------------CHC------------------------------//char s[maxn];int a[maxm][maxm], idx = 1, ans;void draw(int x, int y, int l) {if (s[idx] == 'p') {l >> 1, idx++;draw(x, y, l);draw(x, y >> 1, l);draw(x << 1, y >> 1, l);draw(x << 1, y, l);}if (s[idx++] == 'f') {for (int i = 0; i < l; ++i)for (int j = 0; j < l; ++j)if (a[x + i][y - j] == 0) a[x + i][y - j] = 1, ans++;}}int main() {IN(); OUT();int T;scanf("%d", &T);while (T--) {CLEAR(a, 0);ans = 0;for (int i = 0; i < 2; ++i) {scanf("%s", s);idx = 0;draw(1, N, N);}printf("There are %d black pixels.\n", ans);}return 0;}
阅读全文
0 0
- 例题6-11 四分树(Quadtrees, UVa 297)
- 例题6-11 UVa297 Quadtrees(四分树)
- UVa297 例题6-11 四分树(Quadtrees)
- UVa 297 Quadtrees(四分树)
- uva 297 Quadtrees 四分树
- Quadtrees UVA 297 四分树
- Uva297 Quadtrees【递归建四分树】【例题6-11】
- Uva297 Quadtrees【递归建四分树】【例题6-11】
- UVa 297 Quadtrees(模拟&四分树)
- UVA - 297 Quadtrees(四分图)
- UVA 297Quadtrees(四叉树)
- Uva-297 - Quadtrees(四分树与结构体指针)
- 例题 6-11 四分树 UVa 297
- UVA 297 Quadtrees (4叉树)
- uva 297 - Quadtrees
- uva 297 Quadtrees
- uva 297 - Quadtrees
- Uva 297 - Quadtrees
- 对象序列化与反序列化(Serializable、Externalizable )
- [HAL库学习之路]2.按键输入
- alchemy catalyst(汉化工具) v10.0免费版下载附安装教程
- ubuntu下编写简单的hello world
- UVa Abbott's Revenge
- 例题6-11 四分树(Quadtrees, UVa 297)
- 二、QTcreator 安装及问题解决
- Java IO笔记(Bits)
- NGUI_CheckBox_013
- 互联网概述
- Ubuntu系统垃圾清理
- Jfinal 的 getPara 系列方法
- 【XSY1591】卡片游戏 DP
- win10 x64下编译 opencv 3.1.0 附加模块 opencv_contrib 环境配置