2007Baidu AStar 4

  4.百度的高级搜索方法

你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:)
如输入 site:www.baidu.com inurl:news
则会搜出所有在www.baidu.com站点上的包含"news"子串的url。

现在我们有一个inurl查询列表和一个url列表,你能找出所有至少被查询过一次的url吗?

输入格式
输入第一行是一个整数n,表示一共有n个查询。以下n行每行一个查询。查询的site部分和inurl部分中间恰好用一个空格分割,且每行不包含其他空格。下一行是一个整数m,表示url列表中一共有m个url。以下m行每行一个url。

输出格式
每个url输出一行。如果至少符合一条查询,输出1,否则输出0。

输入样例
3
site:www.baidu.com inurl:/more
site:zhidao.baidu.com inurl:/browse/
site:www.sina.com.cn inurl:www20041223am
7
http://www.baidu.com/more/
http://www.baidu.com/guding/more.html
http://www.baidu.com/events/20060105/photomore.html
http://hi.baidu.com/browse/
http://hi.baidu.com/baidu/
http://www.sina.com.cn/head/www20021123am.shtml
http://www.sina.com.cn/head/www20041223am.shtml

输出样例
1
1
0
0
0
0
1

竞赛时真是什么事情都发生了,VC每次编译都死机,卸载后又无法正确安装,总是安装失败,折腾了近一个小时,剩下的时间不多了,只好换到Linux下用GCC的命令来一点点编译,编译还好,找错就麻烦的很了,先要判断那里有错,然后通过Cout来输出,最后只提交了一道题目1,题目4调试正确后系统已经提示您的竞赛时间已经结束,不知能否通过,就把代码贴出来吧。

#include < iostream >
using   namespace  std;

const   int  N = 10000 ;

char  site[N][ 260 ],url[N][ 260 ];

int  main()
{
    
char ch,*p,str[300];
    
int n,i,j,t,m;
    cin
>>n;
    
for(i=0;i<n;++i)
    
{
        
while((ch=getchar())!=':');
        cin
>>site[i];
        
while((ch=getchar())!=':');
        cin
>>url[i];
        
        
//cout<<site[i]<<':'<<url[i]<<endl;
    }

        
    cin
>>m;
    
for(i=0;i<m;++i)
    
{
        cin
>>str;
        
for(j=0,t=0;j<&& t==0;++j)
        
{
            p
=strstr(str,site[j]);
            
if(p!=NULL)
            
{
                
//cout<<j<<":"<<site[j]<<"--------"<<p<<endl;
                
//cout<<"site found---"<<str+7+strlen(site[i])-1<<"---";
                p=strstr(str+7+strlen(site[j])-1,url[j]);
                
if(p!=NULL)
                
{
                    t
=1;
                    
//cout<<"url found----"<<endl;
                    
//cout<<url[j]<<"---------"<<p<<endl;
                }

            }

        }

        cout
<<t<<endl;
    }


    
return 0;
}

        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值