(ccf)201703-3markdown
#include<iostream>
#include<memory.h>
#include<stack>
#include<string>
#include<cmath>
#include<map>
#include<algorithm>
#include<sstream>
#include<set>
#include<queue>
using namespace std;
//处理超链接部分
string processA(string text)
{
int begin,end;
for(int i=0;i<text.length();i++)
{
if(text[i]=='[')
{
string ch,link;
bool chend=false;
bool linkend=true;;
begin=i;
for(int j=i+1;j<text.length();j++)
{
if(text[j]==']')
{
chend=true;
continue;
}
if(text[j]=='(')
{
linkend=false;
continue;
}
if(text[j]==')')
{
end=j;
break;
}
if(!chend)
ch+=text[j];
if(!linkend)
link+=text[j];
}
string newstr="<a href=\""+link+"\">"+ch+"</a>";
text.replace(begin,end-begin+1,newstr);
}
}
return text;
}
//处理着重号部分
string processK(string text)
{
int begin,end;
for(int i=0;i<text.length();i++)
{
if(text[i]=='_')
{
begin=i;
string k="";
for(int j=i+1;j<text.length();j++)
{
if(text[j]=='_')
{
end=j;
break;
}
k+=text[j];
}
string newstr="<em>"+k+"</em>";
text.replace(begin,end-begin+1,newstr);
}
}
return text;
}
//处理三种区块部分
void processQ(queue<string> &q,queue<string> &r)
{
string front=q.front();
if(front[0]=='*')
{
string newstr="<ul>\n";
while(!q.empty())
{
string t=q.front();
q.pop();
int count=0;
for(int i=0;i<t.length();i++)
{
if(t[i]==' '||t[i]=='*')
count++;
else
break;
}
t.erase(0,count);
t=processA(t);
t=processK(t);
t="<li>"+t+"</li>\n";
newstr+=t;
}
newstr+="</ul>";
r.push(newstr);
}
else if(front[0]=='#')
{
while(!q.empty())
{
string head=q.front();
q.pop();
head=processA(head);
head=processK(head);
int h=0;
int space=0;
for(int i=0;i<head.length();i++)
{
if(head[i]=='#')
h++;
else if(head[i]==' ')
space++;
else
break;
}
head.erase(0,h+space);
ostringstream s;
s<<h;
string H=s.str();
head="<h"+H+">"+head+"</h"+H+">";
r.push(head);
}
}
else
{
string newstr="<p>";
while(!q.empty())
{
string p = q.front();
q.pop();
p = processA(p);
p = processK(p);
if(!q.empty())
p+="\n";
newstr+=p;
}
newstr=newstr+"</p>";
r.push(newstr);
}
}
//读取和输出
int main()
{
string line;
queue<string> q;
queue<string> r;
while(getline(cin,line))
{
if(line=="")
{
if(q.empty())
continue;
else
processQ(q,r);
continue;
}
q.push(line);
}
if(!q.empty())
processQ(q,r);
while(!r.empty())
{
cout<<r.front()<<endl;;
r.pop();
}
return 0;
}
(ccf)201703-3markdown的更多相关文章
- CCF CSP 201703
CCF CSP 2017·03 做了一段时间的CCF CSP试题,个人感觉是这样分布的 A.B题基本纯暴力可满分 B题留心数据范围 C题是个大模拟,留心即可 D题更倾向于图论?(个人做到的D题基本都是 ...
- CCF考试
第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...
- CCF关于NOIP2014复赛报名的通知
CCF关于NOIP2014复赛报名的通知 CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...
- [CCF] Z字形扫描
CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...
- [CCF] ISBN号码检测
CCF ISBN号码检测 题目概述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...
- CCF NOI系列活动
NOI-全国青少年信息学奥林匹克竞赛全国青少年信息学奥林匹克竞赛(NOI)是国内信息学领域内面向中学生的最高水平的大赛,每省派经选拔产生的选手(其中一名是女选手)参加,NOI每年在不同的省市举行. N ...
- CCF考前注意几点
1.数组最好保持初始化习惯,且检查数组初始化在循环内还是循环外,若在循环内需要对数组进行处理,则数组初始化必须放在for循环内. 2.for循环保持好习惯,用括号括起来,以免粗心. 3.if条件判断要 ...
- CCF真题之最优灌溉
201412-4 问题描述 雷雷承包了很多片麦田,为了灌溉这些麦田,雷雷在第一个麦田挖了一口很深的水井,所有的麦田都从这口井来引水灌溉. 为了灌溉,雷雷需要建立一些水渠,以连接水井和麦田,雷雷也可以利 ...
- 《计算机问题求解》总结——2014年CCF计算机课程改革导教班(2014.07.11)
一:引言 "心想事成".这是自己获得导教班学习机会的最佳概括.2013年年末学习李晓明老师的<人群与网络>课程:随后网络认识烟台大学贺利坚老师,了解到2013年 ...
- 2016年CCF第七次测试 俄罗斯方块
//2016年CCF第七次测试 俄罗斯方块 // 这道小模拟题还是不错 // 思路:处理出输入矩阵中含1格子的行数和列数 // 再判是否有一个格子碰到底部,否则整体再往下移动一步,如果有一个格子不能移 ...
随机推荐
- 【Unity】用Shader编程实现3D红心
有些形状,即使没有3D美术设计师提供模型,也能够用代码生成. 对于想保持原创性不想借用他人模型的独立开发人员来说,这无非是一个非常重要的途径. 今天献给大家的是用Shader编程实现的一颗红心,寄托下 ...
- pat-1087【最短路径】
近期一次pat考试中的最后一题.事实上玩算法这东西就像打魔兽.不能光有思想上的高度,微操必须实打实.就这么个迪杰斯特拉算法.多少教科书上都讲烂了. 可是现场又有多少人是敲对的呢?不能光停留在理解上.必 ...
- oc76--NSMutableDictionary
// // main.m // NSMutableDictionary // NSDictionary不可变,初始化后就不可以修改,NSMutableDictionary可变,初始化后可以改变. // ...
- PCB Winform中的WebBrowser扩展拖放(拖拽)功能 实现方法
我们在Winform支持网页通常增加WebBrowser控件实现,相当于内嵌浏览器浏览网页使用, 而此WebBrowser默认情况是文件拖入功能是不支持的, 如何才能支持呢.在这里介绍如何实现方法 一 ...
- Gym - 101982B 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) B. Coprime Integers Mobius+容斥 ab间gcd(x,y)=1的对数
题面 题意:给你 abcd(1e7),求a<=x<=b,c<=y<=d的,gcd(x,y)=1的数量 题解:经典题目,求从1的到n中选x,从1到m中选y的,gcd(x,y)=k ...
- [Swift通天遁地]六、智能布局-(2)视图对象的尺寸和位置相对约束
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- zb的生日-------搜索 和 动态规划
简单的贪心算法 : http://love-oriented.com/pack/P01.html 说实话 我是喜欢 动态规划的.......但是省赛迫在眉睫 , 只好先 学 搜索了 , 赶紧 ...
- git下
----------- 1. 分支管理策略 1)master分支 非常稳定的,只用来发布新版本,平时不在上面干活 2)dev分支 不稳定的,主要在上面干活,每个人都有自己的分支,时不时的往dev分支上 ...
- Android 蓝牙开发基本流程
此例子基于 android demo 对于一般的软件开发人员来说,蓝牙是很少用到的,尤其是Android的蓝牙开发,国内的例子很少 Android对于蓝牙开发从2.0版本的sdk才开始支持,而 ...
- Coursera公开课-Machine_learing:编程作业
第二周编程作业:Linear Regression 分为单一变量和多变量,假想函数为:hθ(x)=θ0+θ1x1+θ2x2+θ3x3+⋯+θnxn.明显已经包含单一变量的情况,所以完成多变量可以一并解 ...