转载自 https://blog.csdn.net/tigerisland45/article/details/81697594

/* CCF201803-3 URL映射 */

#include <iostream>
#include <ctype.h> using namespace std; const int N = ;
string p[N], r[N], s; bool match(string& s, string& t, bool flag)
{
int lent = t.size();
int lens = s.size();
int ps = , pt = ;
while(ps < lens && pt < lent) {
if(t[pt] == s[ps]) {
ps++, pt++;
} else {
// 匹配<xxx>
if(t[pt++] != '<')
return false;
if(flag)
cout << ' '; if(t[pt] == 'i') {
// 匹配<int>
bool ok = false;
while(s[ps] && isdigit(s[ps])) {
if(s[ps] != '')//去掉前导零
ok = true;
if(flag && ok)
cout << s[ps];
ps++;
}
if(!ok)
return false;
pt += ;
} else if(t[pt] == 's') {
// 匹配<str>
bool ok = false;
while(s[ps] && s[ps] != '/') {
ok = true;
if(flag)
cout << s[ps];
ps++;
}
if(!ok)
return false;
pt += ;
} else if(t[pt] == 'p') {//如果合法的话,<path>一定已经是最后一个了
// 匹配<path>
if(flag)
while(s[ps])
cout << s[ps++];
return true;
}
}
} return pt == lent && ps == lens;
} int main()
{
int n, m;
cin >> n >> m;
for(int i = ; i < n; i++)
cin >> p[i] >> r[i]; for(int i = ; i < m; i++) {
cin >> s; bool flag = true;
for(int j = ; flag && j < n; j++)
if(match(s, p[j], false)) {//用了两次match,true的时候会输出
flag = false;
cout << r[j];
match(s, p[j], true);
} if(flag)
cout << "";
cout << endl;
} return ;
}

最新文章

  1. JAVA里的异常
  2. 在eclipse中将SVN项目check下来的正确步骤
  3. Perl Debug error: SetConsoleMode failed, LastError=|6|
  4. Jar mismatch! Fix your dependencies
  5. Android 源码 判断网络数据类型
  6. 打包python脚本为exe可执行文件-pyinstaller和cx_freeze示例
  7. Cadence关闭StartPage的方法
  8. C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
  9. UWP--MVVM简单计算器
  10. 基于Groovy应用程序的spring boot
  11. Android的stateListDrawable,layerDawable,clipdrawable,AnimationDarwable介绍-android学习之旅(五十五)
  12. Codeforces 1097G
  13. 从零开始学spring cloud(六) -------- Ribbon
  14. 2017《JAVA技术》预备作业-计科1502-19-何俏依
  15. Kong管理UI -kong-dashboard
  16. 【代码笔记】Web-JavaScript-JavaScript输出
  17. const与常量,傻傻分不清楚~
  18. console.log等不能打印全部数据/信息
  19. 超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
  20. ASP.NET MVC中使用jQuery时的浏览器缓存问题

热门文章

  1. 菜鸡学C语言之寻根溯源
  2. C#数组--(一维数组,二维数组的声明,使用及遍历)
  3. spring cloud(五)熔断监控Hystrix Dashboard和Turbine
  4. mysql Access denied for user root @localhost (using password:YES)错误
  5. grunt,提示node不是内部命令也不是外部命令
  6. Java JTable视图窗口滚动并定位到某一行
  7. lxml 解析字符处理规则
  8. Python3+Appium安装使用教程
  9. day 02 python 基础
  10. 浮点型数据转整型的丢失精度问题(C++)