/*给出n个不同的奖项(n<=100),每个奖项一共有mi(mi<=10)个提名,所有的提名都是电影名字,
要求找出提名最多的电影名字,并且输出该电影名字。*/
/*
Sample Input:
2 //2个奖项
VISUAL_EFFECTS //奖项名称
3 //该奖项有3个提名
THE_LORD_OF_THE_RINGS:_THE_TWO_TOWERS //电影名称,长度不超过80
SPIDER-MAN //电影名称,长度不超过80
STAR_WARS_EPISODE_II_ATTACK_OF_THE_CLONES //电影名称,长度不超过80
SOUND_EDITING //奖项名称
3 //该奖项有3个提名
THE_LORD_OF_THE_RINGS:_THE_TWO_TOWERS
MINORITY_REPORT
ROAD_TO_PERDITION
0 //结束输入
Output for the Sample Input:
THE_LORD_OF_THE_RINGS:_THE_TWO_TOWERS //提名最多的电影输出
*/
#include <stdio.h>
#include <string.h>
char movie_name[1000][100]={0}; //电影名称最多100*10个mei,每个名称最长不超过100
int movie_count[1000]={0}; //记录提名电影个数
static int name_num = 0; //记录提名电影总数
//记录电影信息
void count_movie_name(const char *s)
{
int i;
for (i=0; i<name_num; ++i)
{
if (strcmp(movie_name[i], s)==0)
{
movie_count[i]++;
return;
}
}
strcpy(movie_name[i], s);
movie_count[i]++;
name_num++;
}
int main()
{
int n = 0; //奖项个数
int d = 0; //该奖项提名电影个数
int flag = 0; //找到提名最多电影标志
int num=0; //记录奖项个数
int i = 0;
int k = 0;
char s[100]={0};
printf("\n输入这次电影奖项的个数:");
while (scanf("%d", &n), n>0)
{
getchar(); //过滤掉回车键
num = n;
while (n--)
{
printf("\n输入第%d项奖项名称:",num-n);
gets(s);
printf("\n输入获得%s奖项提名电影个数:", s);
scanf("%d", &d);
getchar(); //过滤掉回车键
printf("\n输入获得%s奖项提名电影的名称:\n", s);
for (i=0; i<d; ++i)
{
gets(s);
count_movie_name(s);
}
}
printf("\n输入0结束:");
}
printf("\n获得提名最多的电影是:\n");
for (k=0; k<num; ++k)
{
for (i=0; i<name_num; ++i)
{
if (movie_count[i]==num-k)
{
flag = 1;
printf("%s\n", movie_name[i]);
}
}
if (flag==1)
{
return 0;
}
}
return 0;
}