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

📄 1082.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 1082 on 2006-02-07 at 21:01:58 */ 
#include <cstdio>
#include <cstring>

const int MAX = 32;

bool find(char[][MAX], int, char*);

int main()
{
	char label[MAX][MAX], attr[MAX][MAX], lbl[MAX], atl[MAX], ch;
	
	scanf("%*s");
	while(true) {
		int outer = 0, ln = 0;
		bool wellFormed = true;
		while(true) {
			bool exit = false;
			while(getchar() != '<') ;
			if((ch = getchar()) == '/') exit = true;
			else ungetc(ch, stdin);
			scanf("%[^>' ''/']", lbl);
			if(lbl[0] == '?') {
				if(ln != 0 || outer != 1) wellFormed = false;
				printf("%swell-formed\n", wellFormed ? "" : "non ");
				if(!strcmp(lbl, "?end?")) return 0;
				else break;
			} else {
				int an = 0; bool self = false;
				while((ch = getchar()) != '>') {
					if(ch == '/') { 
						self = true; getchar();
						if(ln == 0) outer++;
						break; 
					}
					scanf("%[^=]=\"%*[^\"]\"", atl);
					if(find(attr, an, atl)) wellFormed = false;
					else strcpy(attr[an++], atl);
				}
				if(!self)
					if(exit) {
						if(ln == 0 || strcmp(lbl, label[--ln])) wellFormed = false;
					} else {
						if(find(label, ln, lbl)) wellFormed = false;
						if(wellFormed) {
							if(ln == 0) outer++;
							strcpy(label[ln++], lbl);
						}
					}
			}
		}
	}
}

bool find(char map[][MAX], int n, char* ele)
{
	int i;
	for(i = 0; i < n; i++)
		if(!strcmp(map[i], ele)) return true;
	return false;
}

⌨️ 快捷键说明

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