2003年广东省赛试题1 奥斯卡奖

#include <iostream>
#include 
<string>
#include 
<vector>
#include 
<algorithm>
using namespace std;

struct Movie
{
    
string name;//电影名
    int count;//被提名次数
};
//仿函数
class MovieCompare   
{
public:
    MovieCompare(
string& val):movie(val)
    {
    }
    
bool operator()(Movie& rhs) 
    {
//电影名称是否相等
        return movie.compare(rhs.name)==0;
    }
private:
    
string   movie;//待比较的电影名
}; 

int main()
{
    
////////输入输出重定向
    //freopen("oscar.in","r",stdin);//测试数据文件
    
//freopen("oscar.out","w",stdout);

    
int n,m,i,j,maxCount,pos;
    
string AwardName,MovieName;
    Movie newMovie;
    
while (cin>>n&&n!=0)
    {
        vector
<Movie> movieVect;
        vector
<Movie>::iterator iter;
        
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;
    }
    
return 0;
}

posted on 2008-11-04 19:50  Phinecos(洞庭散人)  阅读(653)  评论(0编辑  收藏  举报

导航