别的都不说了,除了该程序的出处:
http://hi.baidu.com/xun1573/blog/item/6475cbd3da763031970a16be.html
程序测试成功。当然测试文件比较小,不知道文件大了的话效率怎么样
/*
百度的高级搜索方法(2007年初赛)
题面描述:
你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:)
如输入 site:www.baidu.com inurl:news
则会搜出所有在www.baidu.com站点上的包含"news"子串的url。
现在我们有两份数据,一份是site_inurl.txt 一份是url.txt
site_inurl.txt中每行是一个site inurl语法组成的查询串,url.txt中保存的是url列表。
你能否在url列表中找出所有能被site_inurl.txt中的查询串检索到的url?
如site_inurl.txt内容如下:
site:www.baidu.com inurl:/more
site:zhidao.baidu.com inurl:/browse/
site:www.sina.com.cn inurl:www20041223am
url.txt内容如下:
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
则你的程序运行完输出的结果应该为:
http://www.baidu.com/more/
http://www.baidu.com/guding/more.html
http://hi.baidu.com/browse/
http://www.sina.com.cn/head/www20041223am.shtml
程序以命令行形式传入这两个文件名,第一个参数为site_inurl文件对应的文件名,第二个参数为url
列表对应的文件名,程序的输出请输出到标准输出。
*/
#include < iostream >
#include < fstream >
#include < vector >
#include < string >
#include < cstdlib >
#include < iterator >
#include < algorithm >
using namespace std;
int main( int argc, char * argv[])
{
string s;
vector<string> v;
ifstream fin(argv[1]);
if(!fin.is_open())
{
cerr<<"Open fail!";
exit(0);
}
while(getline(fin,s))
{
s=s.substr(s.find_last_of(':')+1);
v.push_back(s);
}
fin.close();
fin.clear();
fin.open(argv[2]);
if(!fin.is_open())
{
cerr<<"Open fail!";
exit(0);
}
while(fin>>s)
{
for(vector<string>::iterator i=v.begin();i!=v.end();++i)
if(s.find(*i)!=string::npos)
{
cout<<s<<endl;
break;
}
}
fin.close();
system("pause");
return 0;
}
百度的高级搜索方法(2007年初赛)
题面描述:
你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:)
如输入 site:www.baidu.com inurl:news
则会搜出所有在www.baidu.com站点上的包含"news"子串的url。
现在我们有两份数据,一份是site_inurl.txt 一份是url.txt
site_inurl.txt中每行是一个site inurl语法组成的查询串,url.txt中保存的是url列表。
你能否在url列表中找出所有能被site_inurl.txt中的查询串检索到的url?
如site_inurl.txt内容如下:
site:www.baidu.com inurl:/more
site:zhidao.baidu.com inurl:/browse/
site:www.sina.com.cn inurl:www20041223am
url.txt内容如下:
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
则你的程序运行完输出的结果应该为:
http://www.baidu.com/more/
http://www.baidu.com/guding/more.html
http://hi.baidu.com/browse/
http://www.sina.com.cn/head/www20041223am.shtml
程序以命令行形式传入这两个文件名,第一个参数为site_inurl文件对应的文件名,第二个参数为url
列表对应的文件名,程序的输出请输出到标准输出。
*/
#include < iostream >
#include < fstream >
#include < vector >
#include < string >
#include < cstdlib >
#include < iterator >
#include < algorithm >
using namespace std;
int main( int argc, char * argv[])
{
string s;
vector<string> v;
ifstream fin(argv[1]);
if(!fin.is_open())
{
cerr<<"Open fail!";
exit(0);
}
while(getline(fin,s))
{
s=s.substr(s.find_last_of(':')+1);
v.push_back(s);
}
fin.close();
fin.clear();
fin.open(argv[2]);
if(!fin.is_open())
{
cerr<<"Open fail!";
exit(0);
}
while(fin>>s)
{
for(vector<string>::iterator i=v.begin();i!=v.end();++i)
if(s.find(*i)!=string::npos)
{
cout<<s<<endl;
break;
}
}
fin.close();
system("pause");
return 0;
}
程序测试成功。当然测试文件比较小,不知道文件大了的话效率怎么样