正文

Search Strategy 2005-09-25 12:17:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/5300.html

分享到:

#include <iostream.h>
#include <fstream.h>
ifstream f("a.txt");
#define cin f
#include <string.h>
int fun(char *s,char *t)
{
 int pos1,pos2,i;
 pos2=0;
 while(s[pos2]!='\0')
 {
  if(s[pos2]=='.')
  {
   if(s[pos2+1]=='c' && s[pos2+2]=='o' && s[pos2+3]=='m' && (s[pos2+4]=='\0' ||
    s[pos2+4]=='/' || s[pos2+4]=='.'))
   {
    pos1=pos2-1;
    while(s[pos1]!='.')
     pos1--;
    goto loop;
   }
   else if (s[pos2+1]=='n' && s[pos2+2]=='e' && s[pos2+3]=='t' && (s[pos2+4]=='\0' ||
    s[pos2+4]=='/' || s[pos2+4]=='.'))
   {
    pos1=pos2-1;
    while(s[pos1]!='.')
     pos1--;
    goto loop;
   }
  }
  pos2++;
 }
loop : for(i=0;i<pos2-pos1;i++)
  t[i]=s[i+pos1];
 t[pos2-pos1]='\0';
 return 0;
}

 

struct Node
{
 char url[100];
 char value[30];
 int w;
 char keyword[100][30];
 int key[100];
 int r;
 char hypervalue[100][30];
 int flag;
}node[100];
int main()
{
 int n,i,j,k,l,r;
 int N=0;
 int mm[100];
 int pos[100];
 char keyword[30];
 cin>>n;
 char hyper[100];
 for(i=0;i<n;i++)
 {
  cin>>node[i].url;
  fun(node[i].url,node[i].value);
  cin>>node[i].w;
  for(j=0;j<node[i].w;j++)
  {
   cin>>node[i].keyword[j];
   node[j].key[i]=1;
  }
  cin>>node[i].r;
  for(j=0;j<node[i].r;j++)
  {
   cin>>hyper;
   fun(hyper,node[i].hypervalue[j]);
  }
 }
 for(i=0;i<n;i++)
 {
  for(j=0;j<n && j!=i;j++)
  {
   for(k=0;k<node[j].r;k++)
   if(strcmp(node[j].hypervalue[k],node[i].value)==0)
   {
    for(l=0;l<node[i].w;l++)
     node[i].key[l]++;
   }
  }
 }
 cin>>k;
 for(l=0;l<k;l++)
 {
  cin>>keyword;
  N=0;
  cout<<"Search results of keyword "<<keyword<<":"<<endl;
  for(i=0;i<n;i++)
  {
   mm[i]=0;
   pos[i]=i;
  }
  for(i=0;i<n;i++)
  {
  for(j=0;j<node[i].w;j++)
  {
  if(strcmp(node[i].keyword[j],keyword)==0)
  {
   mm[N]=node[i].key[j];
   pos[N]=i;
   N++;
   break;
  }
  }
  }
  //cout<<N<<endl;
  for(i=0;i<N;i++)
  for(j=0;j<N-i-1;j++)
  {
   if(mm[j]<mm[j+1])
   {
    int temp=mm[j];
    mm[j]=mm[j+1];
    mm[j+1]=temp;
    temp=pos[j];
    pos[j]=pos[j+1];
    pos[j+1]=temp;
   }
  }
  for(i=0;i<N;i++)
  {
   for(j=4;j<strlen(node[pos[i]].url);j++)
    cout<<node[pos[i]].url[j];
   cout<<endl;
  }  
 }
}

阅读(4064) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册