hdu - 4782 - Beautiful Soup(模拟)
题意:输出一堆乱排版的html标签,去多余空字符,转换为按缩进输出。
题目链接: pid=4782">http://acm.hdu.edu.cn/showproblem.php?pid=4782
——>>2013年成都区赛题目。当时挺多做不出最后一题的队伍做出了此题,而我,无限WA到比赛结束。。
今天。我AC了。。
题目中有一句话很重要:you shouldn’t change anything of any tag.
想想规范化后的标签,仅仅有两种方式开头,一种是标签 < 开头,还有一种是文本开头。。每种开头分别相应一种结尾。。
于是,读标签<xxx>时一直读到标签尾。
。
读文本时一直读到文本尾。。
最后,就AC吧。。
#include <cstdio>
#include <cstring> const int MAXN = 200;
const char* stop = "</html>"; char ch; bool IsSpace(char ch)
{
return ch == 32 || ch == 9 || ch == 10;
} void PrintSpace(int n)
{
while (n--)
{
putchar(' ');
}
} void RemoveSpace()
{
while ((ch = getchar()) && IsSpace(ch));
} void Enter()
{
putchar('\n');
} void GetEntireTag(char* tag)
{
int len = 0;
tag[len++] = '<';
while ((ch = getchar()) && ch != '>')
{
tag[len++] = ch;
}
tag[len++] = '>';
tag[len] = '\0';
} void OutputTag(const char* tag, const int& spaceCnt)
{
if (tag[1] == '/')
{
PrintSpace(spaceCnt - 1);
}
else
{
PrintSpace(spaceCnt);
}
puts(tag);
} void UpdateSpace(const char* tag, int& spaceCnt)
{
int len = strlen(tag); if (tag[1] != '/' && tag[len - 2] != '/')
{
++spaceCnt;
}
else if (tag[1] == '/')
{
--spaceCnt;
}
} void GetAndOutputEntireText(const int& spaceCnt)
{
PrintSpace(spaceCnt);
putchar(ch);
while ((ch = getchar()) && ch != '<')
{
if (IsSpace(ch))
{
RemoveSpace();
if (ch == '<') break;
else
{
PrintSpace(1);
putchar(ch);
}
}
else
{
putchar(ch);
}
}
Enter();
} int main()
{
int T, kase = 0;
char tag[MAXN]; scanf("%d", &T);
getchar();
while (T--)
{
int spaceCnt = 0; ch = getchar();
printf("Case #%d:\n", ++kase);
while (true)
{
if (IsSpace(ch))
{
RemoveSpace();
}
else if (ch == '<')
{
GetEntireTag(tag);
OutputTag(tag, spaceCnt);
if (strcmp(tag, stop) == 0) break;
UpdateSpace(tag, spaceCnt);
ch = getchar();
}
else
{
GetAndOutputEntireText(spaceCnt);
}
}
} return 0;
}
hdu - 4782 - Beautiful Soup(模拟)的更多相关文章
- HDU 4782 Beautiful Soup --模拟
题意: 将一些分散在各行的HTML代码整理成标签树的形式. 解法: 模拟,具体见代码的讲解. 开始没考虑 '\t' .. 代码: #include <iostream> #include ...
- HDU 4782 Beautiful Soup (模拟+注意细节)
思路就是用栈模拟,不用开实体的栈,直接记一个top指针就行. 说说这题的细节: 1.tag标签里的内容不要动,原样输出.比如<p aa bb cc>,就这样输出就行,不要删空格.题目中说了 ...
- hdu 4782 Beautiful Soupz
模拟.其实这题就是题目比较长而已...读完题目就差不多了.tag直接读就可以了,题目说了不用修改.然后整个题目就是让求text部分,严格按空格分开.注意每行前面空格个数. #include<al ...
- python爬虫之Beautiful Soup的基本使用
1.简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索 ...
- 100天搞定机器学习|Day21 Beautiful Soup
前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...
- 爬虫---Beautiful Soup 反反爬虫事例
前两章简单的讲了Beautiful Soup的用法,在爬虫的过程中相信都遇到过一些反爬虫,如何跳过这些反爬虫呢?今天通过知乎网写一个简单的反爬中 什么是反爬虫 简单的说就是使用任何技术手段,阻止别人批 ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(1): 基础知识Beautiful Soup
开始学习网络数据挖掘方面的知识,首先从Beautiful Soup入手(Beautiful Soup是一个Python库,功能是从HTML和XML中解析数据),打算以三篇博文纪录学习Beautiful ...
- Python爬虫学习(11):Beautiful Soup的使用
之前我们从网页中提取重要信息主要是通过自己编写正则表达式完成的,但是如果你觉得正则表达式很好写的话,那你估计不是地球人了,而且很容易出问题.下边要介绍的Beautiful Soup就可以帮你简化这些操 ...
随机推荐
- 深入理解Java的注解(Annotation):基本概念(1)
zz自:http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 什么是注解(Annotation): Annotation(注解)就是 ...
- ubantu16.04安装配置samba服务(原创)
1.安装samba服务 $ sudo apt-get install samba samba-common$ sudo apt-get install smbclient 如果你开启了防火墙,关闭: ...
- 使用vscode开发调试.net core应用程序并部署到Linux跨平台
使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发及调试. https://github.com/aspnet/ ...
- SQL 插入多行数据语句整理
参考别人的,希望对大家有用. 1.只是插入简单的有限行数据时用: insert 要插入的表名(列名1,列名2,....) select '列名1需要的数据','列名2需要的数据',... union ...
- (2)C# 创建ef oracle
1.NUGet下载 2.下载 Oracle Developer Tools for Visual Studio https://www.oracle.com/technetwork/develope ...
- 【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
转自:http://www.cnblogs.com/kevince/p/3887827.html 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这么一说大家心里肯定有数了吧,“不就是nex ...
- POJ 1321 棋盘问题 (DFS + 回溯)
题目链接:http://poj.org/problem?id=1321 题意:中文题目,就不多说了...... 思路: 解题方法挺多,刚开始想的是先从N行中选择出来含有“#”的K行,再在这K行中放置K ...
- HDU 5695 Gym Class && 百度之星 初赛 1006
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5695 本文链接:http://www.cnblogs.com/Ash-ly/p/5515234.htm ...
- luogu P4012 深海机器人问题
luogu P4012 深海机器人问题 // luogu-judger-enable-o2 #include<queue> #include<cstdio> #include& ...
- 【高斯消元】【异或方程组】poj1222 EXTENDED LIGHTS OUT
由于每个点的状态受到其自身和周围四个点的影响,所以可以这样建立异或方程组: 引用题解: http://hi.baidu.com/ofeitian/item/9899edce6dc6d3d2974452 ...