我是靠谱客的博主 幽默美女,最近开发中收集的这篇文章主要介绍CCF历年题目201803-3 URL映射,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

代码:

#include<stdio.h>
#include<string.h>
#include<string>
#include<vector>
#define MAXN 105
using namespace std;
char rule[MAXN][MAXN];
char name[MAXN][MAXN];
int n,m;
vector<string> value;//参数值 
bool deal_str(char *str, char* rule)
{
value.clear();
int i=0,j=0;
while(i<strlen(str) && j<strlen(rule))
{
if(rule[j]=='<')
{
string tmp;
if(rule[j+1]=='i')
{
int flag=0;//判断前导0的标志 
while(str[i]!='' && str[i]!='/')
{
if(str[i]<'0'||str[i]>'9')
return false;
if(flag==0 && str[i]=='0')
{
i++;
continue;
}
flag=1;
tmp+=str[i];
i++;
}
}
else if(rule[j+1]=='s')
{
while(str[i]!='' && str[i]!='/')
{
tmp+=str[i];
i++;
}
}
else if(rule[j+1]=='p')
{
while(str[i]!='')
{
tmp+=str[i];
i++;
}
value.push_back(tmp);
return true;
}
value.push_back(tmp);
if(strchr(rule+j,'/')!=NULL)
j=strchr(rule+j,'/')-rule;
else
j=strlen(rule);
continue;
}
if(str[i]==rule[j])
{
i++;
j++;
continue;
}
return false;
}
if(i==strlen(str) && j==strlen(rule))
return true;
return false;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%s%s",rule[i],name[i]);
}
char str[MAXN];
for(int i=0;i<m;i++)
{
scanf("%s",str);
int flag=0;
int j;
for(j=0;j<n;j++)
{
if(deal_str(str,rule[j])==true)
{
flag=1;
break;
}
}
if(flag==1)
{
printf("%s ",name[j]);
for(int j=0;j<value.size();j++)
{
printf("%s ",value[j].c_str());
}
printf("n");
}
else printf("404n");
}
return 0;
}

最后

以上就是幽默美女为你收集整理的CCF历年题目201803-3 URL映射的全部内容,希望文章能够帮你解决CCF历年题目201803-3 URL映射所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部