⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1692.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1692 on 2005-09-28 at 20:30:38 */ 
#include <cstdio>
#include <cstring>
#define  MAX  128

class BTreeNode {
public:
	char vary;
	int order;
	char story[300];
	char end[16];
	bool visited;
	BTreeNode *left;
	BTreeNode *right;
	void init(char v, char *s, BTreeNode *l, BTreeNode *r, char *e, int o) {
		strcpy(story, s);
		vary = v;
		order = o;
		visited = false;
		if(v == 'C') {
			left = l;
			right = r;
			end[0] = 0;
		} else {
			left = NULL;
			right = NULL;
			strcpy(end, e);
		}
	}
	bool searchEnd(int i, int *floor, int *way) {
		bool findEnd = false;
		if(!visited) {
			visited = true;
		} else {
			return false;
		}
		way[i] = order;
		if(vary == 'E') {
			if(!strcmp(end, "HAPPY")) {
				*floor = i;
				return true;
			} else {
				return false;
			}
		} else {
			findEnd = left->searchEnd(i+1, floor, way);
			if(!findEnd) {
				findEnd = right->searchEnd(i+1, floor, way);
			}
			return findEnd;
		}
	}
};

int main()
{
	BTreeNode *Node[MAX];
	char vary, con[300], end[16], ch;
	int test, page, lchoice, rchoice;
	int i, j, len;
	bool begin;
	int way[MAX], floor;
	
	for(i = 0; i < MAX; i++) {
		Node[i] = new BTreeNode;
	}
	scanf("%d", &test);
	for(i = 1; i <= test; i++) {
		scanf("%d", &page);
		for(j = 1; j <= page; j++) {
			while(getchar() != '\n')
				;
			vary = getchar();
			begin = false;
			for(len = 0; true; ) {
				ch = getchar();
				if(ch == '"') {
					if(!begin) {
						begin = true;
					} else {
						con[len] = 0;
						break;
					}
				} else if(ch == ' ') {
					if(begin) {
						con[len++] = ch;
					}
				} else {
					con[len++] = ch;
				}
			}
			if(vary == 'C') {
				scanf("%d %d", &lchoice, &rchoice);
				end[0] = 0;
			} else {
				scanf("%s", end);
				lchoice = 0;
				rchoice = 0;
			}
			Node[j]->init(vary, con, Node[lchoice], Node[rchoice], end, j);
		}
		Node[1]->searchEnd(1, &floor, way);
		printf("STORY %d\n", i);
		for(j = 1; j <= floor; j++) {
			printf("%s\n", Node[way[j]]->story);
		}
	}

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -