浏览器

来源:互联网 发布:网络端游什么游戏好玩 编辑:程序博客网 时间:2024/05/01 03:47

                                                                      浏览器
Description
Firefox浏览器具有网址记忆功能,能够记住用户在地址栏中输入并访问过的网址;用户下次只需输入网址的一部分字符,浏览器就会在地址栏下方弹出建议框,提供访问历史记录中包含了用户输入字符的网址列表,使用户能方便、快捷地访问网页。你所在的公司正在研发一款新型的浏览器,项目经理指派你实现类似firefox的网址记忆功能。
Input
第一行包含一个整数N(1<=N<=100),代表历史记录中的网址数目。在后面的N行信息中,每一行都包括了一个网址字符串和一个整数,整数代表该行网址的被访问次数。字符串和整数之间有一个空格。第N+2行为一个整数M,代表用户在地址栏输入字符串的次数。在后面的M行信息中,每行都是一个字符串(可以是单个字符),代表用户某次在地址栏中输入的内容。
Output
针对输入中后M行的输入字符串,输出相应的地址栏列表。比如对某个输入字符串u,输出历史记录中包含了u的网址,并按网址被访问次数降序排列;如果有些网址的被访问数量相等,则按照网址的字符次序升序排列。如果包含u的网址数目超过10个,则需输出前10个;如果没有包含u的网址,则输入一个空行。每个输出的网址占一行,在每个输入字符串所对应的网址列表之间,需有一个空行。

Sample Input                                  
5
www.sina.com.cn 25
www.sohu.com 20
www.stnn.cc 1
www.ifeng.com 7
www.qq.com 3
3
n
s

Output for Sample input
www.sina.com.cn
www.ifeng.com
www.stnn.cc

 

www.sina.com.cn
www.sohu.com
www.stnn.cc

 

www.sina.com.cn
www.sohu.com
www.ifeng.com
www.qq.com

 

程序代码为:

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include <functional>
using namespace std;
class WEBSTR
{
public:
 //WEBSTR(){sit=0;num=0;}
    WEBSTR(string a,int b):sit(a),num(b){};
 string sit;
 int num;
};
bool comp(WEBSTR &A,WEBSTR &B)
{
 
 if(A.num>B.num)
 {
  return true;
 }
  else if(A.num<B.num)
  {
   return false;
  }
  else
  {
   if(A.sit<B.sit)
    return true;
   else
   {
    return false;
   }
  }
}
void findweblist(const vector<WEBSTR>&rv,string tpstr,vector<WEBSTR>&tv )
{
      for(int i=0;i<rv.size();i++)
   {
    if(rv[i].sit.find(tpstr)!=string::npos)
                tv.push_back(rv[i]);
   }
}
int main()
{
 
 ifstream filein("a.in");
 vector<WEBSTR>v;
 string sit;
 int num2=0;
 int N=0,num=0;
 string tempstr;
 filein>>N;
 for(int i=0;i<N;i++)
 {
  filein>>sit>>num2;
  WEBSTR mysit(sit,num2);
  v.push_back(mysit);
 }
 //find
    filein>>num;
 vector<WEBSTR>v2;
    //vector<WEBSTR>v3;
    for(int j=0;j<num;j++)
 {
  filein>>tempstr;
        findweblist(v,tempstr,v2);
        sort(v2.begin(),v2.end(),comp);
  for(int k=0;k<v2.size();k++)
  {  
   if(k<10)
   {
                cout<<v2[k].sit<<endl;
   }
   else
   {
    break;
   }
   
  }
  if(v2.size()==0)
  {
   v2.clear();
   cout<<endl;
  }
  if (j<num-1)
   cout<<endl;
        v2.clear();
 }

 return 0;
}