hdu-4782
来源:互联网 发布:台湾国护照贴纸 知乎 编辑:程序博客网 时间:2024/06/05 10:29
注意content中的多个空格,tab,换行都要处理成一个空格,还有文件最后要有换行符,不然PE
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <vector>#include <queue>#include <stack>#include <algorithm>using namespace std;#define F(i, n) for (int i=0;i<(n);++i)#define LBIT(x) x&-xint T;int n;char _buf[1000000];class Parser {public: Parser(char * buf): level(-1), init(false), nsize(0), buf(_buf){}void parse();enum tagType {open,close,self_close };private:bool eatWhite();void outSpace();char c;int level;int type;bool init;int nsize;char * buf;};bool Parser::eatWhite() {int n = 0;while(true) {c = getchar();if (c == ' ' || c == '\n' || c == 9)++n;elsebreak;}return n > 0;}void Parser::outSpace() {for (int i=0;i<level;++i)printf(" ");}void Parser::parse() {bool hasSpace = eatWhite();while(true) {if (!init)init = true;nsize = 0;if (c == '<') { buf[nsize++]= c; while(true) {c = getchar();buf[nsize++]= c;if (c == '>')break; } if (buf[1] == '/')type = close; else if (buf[nsize - 2] == '/')type = self_close; elsetype = open; buf[nsize] = '\0'; switch(type) { case close: outSpace(); printf("%s", buf);--level;break; case open:++level;outSpace(); printf("%s", buf);break; case self_close: outSpace(); cout << ' '; printf("%s", buf); break; } if (init && level == -1)break; putchar('\n'); eatWhite();} else { buf[nsize++] = c; while(true) { c = getchar();if (c == '<')break;else if (c == ' ' || c == '\n' || c == 9) {eatWhite(); if (c == '<') break; else { buf[nsize++] = ' '; buf[nsize++] = c; }}elsebuf[nsize++] = c; } buf[nsize] = '\0'; outSpace(); printf(" %s\n", buf);}}}int main(){ freopen("input.in", "r", stdin); //freopen("output.out", "w", stdout); scanf("%d",&T); for (int i=1;i<=T;++i) { printf("Case #%d:\n", i); Parser parser(_buf); parser.parse(); putchar('\n'); } return 0;}
0 0
- hdu-4782
- hdu 4782 Beautiful Soupz
- HDU 4782 Beautiful Soup
- hdu 4782 模拟
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- C++ Web Programming
- python 获取当前代码行号
- 【驱动】MTD子系统分析
- java也能写出漂亮的界面(Java开源Swing外观)
- 复制问题 (python)
- hdu-4782
- sql 拼接查询 小记
- 怎么进行数据分析
- 构造方法的调用并涉及this、super用法
- linux系统下安装zookeeper集群
- RDIFramework.NET 中多表关联查询分页实例
- 我们都是好孩子,异想天开的孩子
- 旅行家的预算
- Oracle中JOB的创建方法以及一个细节的探究