zoukankan      html  css  js  c++  java
  • TZOJ 5280 搜索引擎(模拟字符串)

    描述

    谷歌、百度等搜索引擎已经成为了互连网中不可或缺的一部分。在本题中,你的任务也是设计一个搜索论文的搜索引擎,当然,本题的要求比起实际的需求要少了许多。 

    本题的输入将首先给出一系列的论文,对于每篇论文首先给出标题,然后给出它被引用的次数。然后会有一系列的搜索询问,询问标题中包含特定关键词的论文有哪些。 

    每一个询问包含一个关键词词(一个单词),你需要找出标题包含关键词的论文。 

    “包含”必须是标题中有一个词正好是给定的关键词,不区分大小写。 

    对每个询问,都按被引用的次数从多到少输出满足条件的论文的标题。如果有被引用的次数相同的论文,则按照论文在输入中的顺序排列,先给出的论文排在前面。

    输入

    输入包含多组数据。 

    每组数据首先有一行包含一个整数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]='';
    53                         if(kk==l)//长度相等
    54                             if(stricmp(word,wd)==0)//stricmp不区分大小写
    55                                 puts(a[j].word);
    56                         kk=0;
    57                     }
    58                 }
    59                 word[kk]='';
    60                 if(kk==l)
    61                     if(stricmp(word,wd)==0)
    62                         puts(a[j].word);
    63             }
    64             puts("***");
    65         }
    66         puts("---");
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    筱玛的迷阵探险(折半搜索+01字典树)
    递推
    thin mission 2021 10 8
    4级 -- 阅读
    c++——小知识
    stl
    string
    ting mission 2021.9.20
    ting mission 2021.9.27
    欧拉函数
  • 原文地址:https://www.cnblogs.com/taozi1115402474/p/8417463.html
Copyright © 2011-2022 走看看