2021-2022蓝桥杯寒假集训训练 - 问题 G: HTML新の手 -图片收集者
传送门
- HTML新手 - 图片收集者
- 题目描述
- 输入描述
- 输出描述
- 样例一
- 输入
- 输出
- 题目分析
- AC代码
HTML新手 - 图片收集者
- HTML新手 - 图片收集者
时间限制:2秒
空间限制:1024M
之所以在CSDN的题解上添加“の”,是因为CSDN博客标题不让包含“新手”两个字??!
题目描述
春江潮水连海平,海上明月共潮生。
滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰;
空里流霜不觉飞,汀上白沙看不见。
江天一色无纤尘,皎皎空中孤月轮。
江畔何人初见月?江月何年初照人?
人生代代无穷已,江月年年望相似。
不知江月待何人,但见长江送流水。
白云一片去悠悠,青枫浦上不胜愁。
谁家今夜扁舟子?何处相思明月楼?
可怜楼上月裴回,应照离人妆镜台。
玉户帘中卷不去,捣衣砧上拂还来。
此时相望不相闻,愿逐月华流照君。
鸿雁长飞光不度,鱼龙潜跃水成文。
昨夜闲潭梦落花,可怜春半不还家。
江水流春去欲尽,江潭落月复西斜。
斜月沉沉藏海雾,碣石潇湘无限路。
不知乘月几人归,落月摇情满江树。
—— 小T发现北化似乎没有HTML课程,于是就开启了她的HTML学习之路。
通过学习得知,只需要在html文件中输入
<img src="图片地址">
就能在浏览器中显示该地址对应的图片。
例如,在html文件中输入:
<img src="https://www.baidu.com/img/flexible/logo/pc/result.png">
则在浏览器中将会显示地址为https://www.baidu.com/img/flexible/logo/pc/result.png的图片,显示结果为:
同理,在html文件中输入
<html><body><h1>LetMeFly</h1><img src="https://letmefly.xyz" alt="First Img"><h1>La La La</h1><img src="https://qkiller.xyz" height="80px"><br><img src="https://diary.letmefly.xyz" width="66px" /></body> </html>
则浏览器中将会显示三张图片,图片地址分别为https://letmefly.xyz、https://qkiller.xyz、https://diary.letmefly.xyz
(不考虑注释等特殊情况)也就是说,只要遇到<img src="???" ***>
的情况,就认为发现了一张地址为???
的图片,其中***
代表其他字符。 请不要把本题想象地过于复杂。
作为一个图片收集爱好者,小T想要知道一个 规范的 html文件中,都包含哪些图片。
输入描述
输入是一个规范的html源文件,且满足:
文件中不包含注释
文件中不包含换行的
<img>
标签图片地址均由双引号包括(没有单引号)
图片地址中不包含双引号
文件大小不超过2M,且包含不超过1000张图片
每张图片的地址长度小于1024
输出描述
输出给定html文件中有哪些图片。
第一行一个整数代表源文件中图片的数量n
接下来按顺序输出n行,第i行代表第i个图片的地址
样例一
输入
<html><body><h1>LetMeFly</h1><img src="https://letmefly.xyz" alt="First Img"><h1>La La La</h1><img src="https://qkiller.xyz" height="80px"><br><img src="https://diary.letmefly.xyz" width="66px" /></body>
</html>
输出
3
https://letmefly.xyz
https://qkiller.xyz
https://diary.letmefly.xyz
题目分析
根据题目描述,没有比较复杂的标签的情况。
因此可以采用以下思路:
先找出所有的
img
标签的起止位置只要遇到了“
<img
”,我们就认为找到了一个img
标签,之后找到其后的第一个“>
”,即可分离出这个img
标签(<img ****>
)对于这个img标签,我们只需要找到
src
属性对于一个找到的
img
标签,我们只需要在标签范围内寻找“src="
”之后找到后其后的“"
”,二者之间的部分就是图片的地址。
AC代码
#include <stdio.h>
#include <string.h>char s[2 * 1024 * 1024 + 10]; // 输入文件最大2Mchar img[1000][1024]; // 最多1000张图片,图片长度<1024(加上个\0正好≤1024)int findImg4End(int begin) { // Find Img's End,从begin开始寻找img标签的结尾。(因为本题保证img标签不会换行,所以只要出现“<img ”,就可以认为出现了img标签,也就可以认为后面一定会出现闭合的“>”)while (s[begin] != '>')begin++;return begin;
}int main() {int imgNum = 0;while (gets(s)) { // 因题目规定img标签不会跨行,因此一次分析一行即可int l = strlen(s);int analyze2 = 0; // Analyze to,分析到了哪一个字符while (analyze2 < l) {if (analyze2 + 4 < l && s[analyze2] == '<' && s[analyze2 + 1] == 'i' && s[analyze2 + 2] == 'm' && s[analyze2 + 3] == 'g' && s[analyze2 + 4] == ' ') { // 找到了一个img标签的开始int img4End = findImg4End(analyze2 + 5); // 找到一个img标签,范围[analyze2, img4End]// printf("img[%d, %d]\n", analyze2, img4End); //****int srcBegin = analyze2;while (!(s[srcBegin] == 's' && s[srcBegin + 1] == 'r' && s[srcBegin + 2] == 'c' && s[srcBegin + 3] == '=' && s[srcBegin + 4] == '"')) // 输入数据一定能找到srcBegin++;srcBegin = srcBegin + 5; // “"”后面开始int srcEnd = srcBegin;while (s[srcEnd] != '"')srcEnd++;// 图片地址的真正范围是 [srcBegin, srcEnd)// printf("src[%d, %d)\n", srcBegin, srcEnd); //****for (int loc = srcBegin; loc < srcEnd; loc++) {img[imgNum][loc - srcBegin] = s[loc];}img[imgNum++][srcEnd] = '\0';analyze2 = img4End + 1;}else {analyze2++;}}}printf("%d\n", imgNum);for (int i = 0; i < imgNum; i++) {puts(img[i]);}return 0;
}
gcc.exe (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0 编译通过
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/123068245
2021-2022蓝桥杯寒假集训训练 - 问题 G: HTML新の手 -图片收集者相关推荐
- 2021.5.22 2022蓝桥杯练习赛3
2021.5.22 2022蓝桥杯练习赛3 闲话: 1.就难度而言,本次练习赛题目整体比较简单,要是认真补了前两场的题,应该可以轻松做完4到5题. 2.就体验而言,这场练习赛数据普遍较弱,基本上瞎搞都 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- Python【2021年蓝桥杯省赛填空】
文章目录 Python[2021年蓝桥杯省赛填空] A.卡片 B.直线 C.货物摆放 D.路径 E.回路计数[状态压缩DP] Python[2021年蓝桥杯省赛填空] A.卡片 note = [202 ...
- 2022蓝桥杯省赛C++A组初尝试
前言 耗时三个半小时,看看自己不懂的有多少,以便明确后续备赛2023方向 耗时3个半小时,只拿了18分,没学过,时间再多也做不出来,有奥数那感觉了 据说蓝桥杯省3得做对 2填空 + 2大题(30分), ...
- 蓝桥杯:入门训练 序列求和
蓝桥杯:入门训练 序列求和 问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值. 样例输入 4 样例输出 10 ...
- 蓝桥杯:入门训练 圆的面积
蓝桥杯:入门训练 圆的面积 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本 ...
- 【2021年蓝桥杯Java-B组国赛题解】
2021年蓝桥杯Java-B组国赛
- 蓝桥杯 试题 算法训练 筛选号码 Java
蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...
- 【蓝桥杯真题】2021年蓝桥杯省赛A组题目解析+代码(python组)
2021年蓝桥杯省赛A组题解(python组) 来自微信公众号:算法梦工厂,二维码见文末. 欢迎加入蓝桥杯备赛群:768245918,获取往届试题,测试数据,算法课程等相关资源. A:卡片 答案:31 ...
最新文章
- oracle中before,Oracle中Before和After触发器的例子
- H5移动前端性能优化
- java set第n位_Java学习路线:float在内存中的存储
- PHP开发环境配置:安装与配置Apache、PHP、MySQL、PhpMyAdmin
- Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】
- 华科计算机专硕英语几,考研考华科计算机考数学几英语几啊,另外考华科数..._考研_帮考网...
- 无法通过ip地址连接其它电脑的数据库,但是又可以ping通,错的不是配置,而是差了一个步骤
- 普通循环和numpy速率对比
- 功能强大的云打印组件-开始使用
- 【Windows】添加开机启动项
- HFT-CNN:层级多标签分类,让你的模型多学习几次
- keil 5(C51)下载安装
- Tableau——其他参考方法
- 生物医学工程实用在线工具
- 思维导图的10种类型有哪些?思维导图结构详解
- 400GE燎原前夜,智能IP网络的核心路由器巅峰际会
- 打印正六边形(C语言)
- 怎么从身份证号码批量提取出生年月日?
- unity再战PBR材质流程与材质制作实践
- 差旅安全,你了解多少?
热门文章
- uniapp如何使用uview中的loadmore上拉加载
- 【OFDM】AWGN 信道下 BPSK 调制 (卷积码) 性能对比仿真实验 (Matlab 实现)
- linux查询电脑mac地址,查看MAC地址的几种方法汇总
- c语言中大写a对应的数字,123456789a
- [听风]TBC单体插件数据统计Recount
- 流媒体后视镜方案关键技术--电子防眩目
- @Retryable和@Recover的使用
- Unity Shader 法线贴图原理解析
- 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
- 谷歌工程师深度技术分析“为什么ios比android流畅