好文档 - 专业文书写作范文服务资料分享网站

安卓开发工程师

天下 分享 时间: 加入收藏 我要投稿 点赞

时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 204800KB;其他语言 729088KB 题目描述: 给定一些字符串,请写一个算法,从中搜索出包含您输入的字符序列的那些字符串,按匹配度的高低排序输出。没有任何一个字符串匹配上,输出-1。 字符串源source 如下: \\\\\\\\\\\ 若输入查找的有序字符序列为\,则运算结果如下(请注意结果的排序规则)。 ABC (匹配 ABC)(完全匹配上,匹配度最大) ABCD (匹配 ABC.) ABDC (匹配 AB.C) ABDCF (匹配 AB.C.) ABDFCG (匹配 AB..C.) ABDFGC (匹配 AB...C) ADBCF (匹配 A.BC.) GABCEFG(匹配 .ABC...) 输入 您需要查找的字符串 样例输入 刺猬实习ABC

刺猬实习 所以其实就是暴力的去匹配resources,然后转成01串,排序输出就ok~ 见代码~~ #include using namespace std;

struct node{ int a; string b; };

vector < string > res; vector < node > v;

bool cmp( const node &v1, const node &v2)//注意:本函数的参数的类型一定要与vector中元素的类型一致 {

return v1.b > v2.b;//升序排列 }

/*请完成下面这个函数,实现题目要求的功能*/

/*当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ */

/******************************开始写代码******************************/ void doFilter(string a) {

int length=a.length(); for(int i=0;i

int k=0;

string b=res[i]; int len=b.length(); string ans=\ int f=0;

for(int j=0;j

if(b[j]==a[k]) {

ans=ans+\ k++; } else {

刺猬实习 ans=ans+\ }

if(k==length) {

f=1;

for(int t=j+1;t

ans=ans+\ }

break; } }

if(f==0) {

continue; }

int si=ans.length(); for(int j=si;j<=8;j++) {

ans=ans+\ }

node tt; tt.a=i; tt.b=ans;

v.push_back(tt); }

if(v.size()==0) {

cout<<-1<

sort(v.begin(),v.end(),cmp); for(int i=0;i

int k=v[i].a;

cout<

/******************************结束写代码******************************/

int main() {

res.push_back(\

刺猬实习 res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\ res.push_back(\

string a; cin>>a; doFilter(a); return 0; } 刺猬实习

安卓开发工程师

时间限制:C/C++语言1000MS;其他语言3000MS内存限制:C/C++语言204800KB;其他语言729088KB题目描述:给定一些字符串,请写一个算法,从中搜索出包含您输入的字符序列的那些字符串,按匹配度的高低排序输出。没有任何一个字符串匹配上,输出-1。字符串源source如下:\\\\\\\\\\\若输入查找的有序字符序列为\,则运算结果如下(请
推荐度:
点击下载文档文档为doc格式
5rusa5ibp33z01x0bvw21wxgu8k84a00nf1
领取福利

微信扫码领取福利

微信扫码分享