描述
谷歌、百度等搜索引擎已经成为了互连网中不可或缺的一部分。在本题中,你的任务也是设计一个搜索论文的搜索引擎,当然,本题的要求比起实际的需求要少了许多。
本题的输入将首先给出一系列的论文,对于每篇论文首先给出标题,然后给出它被引用的次数。然后会有一系列的搜索询问,询问标题中包含特定关键词的论文有哪些。
每一个询问包含一个关键词词(一个单词),你需要找出标题包含关键词的论文。
“包含”必须是标题中有一个词正好是给定的关键词,不区分大小写。
对每个询问,都按被引用的次数从多到少输出满足条件的论文的标题。如果有被引用的次数相同的论文,则按照论文在输入中的顺序排列,先给出的论文排在前面。
输入
输入包含多组数据。
每组数据首先有一行包含一个整数N(1
≤ N ≤ 1000),表示论文的数目,N =
0表示输入结束。每组论文的信息第一行是论文的标题,由字母(大小写均可)和空格组成,不超过10个词,每个词不超过20个字符,标题总共不超过250个字符。第二行是一个整数K(0
≤ K ≤ 200),表示它被引用的次数。在论文信息结束以后,有一行包含一个整数M(1 ≤ M ≤
100),表示询问的数目。接下来有M行,每行是一个询问,由一个单词构成,每个词不超过20个字符。
输出
对每个询问,按题目给定的顺序输出满足条件的论文的标题;如果没有满足条件的论文,就不输出。在每组询问的输出后输出一行”***”,在每组数据的输出之后输出一行”---”。
样例输入
6
Finding the Shortest Path
120
Finding the k Shortest Path
80
Find Augmenting Path in General Graph
80
Matching in Bipartite Graph
200
Finding kth Shortest Path
50
Graph Theory and its Applications
40
5
Shortest
Graph
Path
find
Application
0
样例输出
Finding the Shortest Path
Finding the k Shortest Path
Finding kth Shortest Path
***
Matching in Bipartite Graph
Find Augmenting Path in General Graph
Graph Theory and its Applications
***
Finding the Shortest Path
Finding the k Shortest Path
Find Augmenting Path in General Graph
Finding kth Shortest Path
***
Find Augmenting Path in General Graph
***
***
---
题意
如上
题解
模拟,详情看代码
代码
这个代码不是很好,for嵌套有点多
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 using namespace std; 5 6 struct lw//论文 7 { 8 char word[251]; 9 int use,mem;//use使用的次数,mem编号 10 }a[1001]; 11 bool cmp(lw a,lw b) 12 { 13 if(a.use>b.use)//使用多的放前面 14 return true; 15 else if(a.use==b.use) 16 if(a.mem<b.mem)//编号小的放前面 17 return true; 18 return false; 19 } 20 int main() 21 { 22 int n,m; 23 while(scanf("%d",&n)!=EOF,n) 24 { 25 getchar(); 26 for(int i=0;i<n;i++) 27 { 28 gets(a[i].word); 29 scanf("%d",&a[i].use); 30 getchar(); 31 a[i].mem=i; 32 } 33 sort(a,a+n,cmp);//排序 34 scanf("%d",&m); 35 char wd[21]; 36 for(int i=0;i<m;i++) 37 { 38 scanf("%s",wd); 39 int l=strlen(wd); 40 for(int j=0;j<n;j++) 41 { 42 int kk=0;//长度 43 char word[251]; 44 for(int k=0;a[j].word[k];k++) 45 { 46 if(a[j].word[k]!=' ') 47 { 48 word[kk++]=a[j].word[k]; 49 } 50 else 51 { 52 word[kk]='