📄 1082.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 + -