<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
usingnamespacestd;
structMovie
{
stringname;//电影名
intcount;//被提名次数
};
//仿函数
classMovieCompare
{
public:
MovieCompare(string&val):movie(val)
{
}
booloperator()(Movie&rhs)
{//电影名称是否相等
returnmovie.compare(rhs.name)==0;
}
private:
stringmovie;//待比较的电影名
};
intmain()
{
////////输入输出重定向
//freopen("oscar.in","r",stdin);//测试数据文件
//freopen("oscar.out","w",stdout);
intn,m,i,j,maxCount,pos;
stringAwardName,MovieName;
MovienewMovie;
while(cin>>n&&n!=0)
{
vector<Movie>movieVect;
vector<Movie>::iteratoriter;
for(i=0;i<n;++i)
{
cin>>AwardName;//提名奖项名称
cin>>m;//提名奖项下影片数目
for(j=0;j<m;++j)
{
cin>>MovieName;//影片数目
iter=find_if(movieVect.begin(),movieVect.end(),MovieCompare(MovieName));//是否已经存在影片列表中
if(iter!=movieVect.end())
{//找到
iter->count++;
}
else
{//还未存在,则加入电影列表中
newMovie.name=MovieName;
newMovie.count=1;
movieVect.push_back(newMovie);
}
}
}
maxCount=0;
//找到第一个被提名次数最多的电影
for(i=0;i<movieVect.size();++i)
{
if(movieVect[i].count>maxCount)
{
maxCount=movieVect[i].count;
pos=i;
}
}
cout<<movieVect[pos].name<<endl;
}
return0;
}
#include<string>
#include<vector>
#include<algorithm>
usingnamespacestd;
structMovie
{
stringname;//电影名
intcount;//被提名次数
};
//仿函数
classMovieCompare
{
public:
MovieCompare(string&val):movie(val)
{
}
booloperator()(Movie&rhs)
{//电影名称是否相等
returnmovie.compare(rhs.name)==0;
}
private:
stringmovie;//待比较的电影名
};
intmain()
{
////////输入输出重定向
//freopen("oscar.in","r",stdin);//测试数据文件
//freopen("oscar.out","w",stdout);
intn,m,i,j,maxCount,pos;
stringAwardName,MovieName;
MovienewMovie;
while(cin>>n&&n!=0)
{
vector<Movie>movieVect;
vector<Movie>::iteratoriter;
for(i=0;i<n;++i)
{
cin>>AwardName;//提名奖项名称
cin>>m;//提名奖项下影片数目
for(j=0;j<m;++j)
{
cin>>MovieName;//影片数目
iter=find_if(movieVect.begin(),movieVect.end(),MovieCompare(MovieName));//是否已经存在影片列表中
if(iter!=movieVect.end())
{//找到
iter->count++;
}
else
{//还未存在,则加入电影列表中
newMovie.name=MovieName;
newMovie.count=1;
movieVect.push_back(newMovie);
}
}
}
maxCount=0;
//找到第一个被提名次数最多的电影
for(i=0;i<movieVect.size();++i)
{
if(movieVect[i].count>maxCount)
{
maxCount=movieVect[i].count;
pos=i;
}
}
cout<<movieVect[pos].name<<endl;
}
return0;
}
本文介绍了一个使用C++编写的程序,该程序通过读取输入来统计电影被提名的次数,并找出被提名次数最多的电影。利用标准模板库STL中的vector容器和find_if算法实现了这一功能。
2816

被折叠的 条评论
为什么被折叠?



