题目描述
某一天,hcbbt等一群弱菜去tamara巨巨家里一起玩了一个卡牌游戏。巨 巨家里有200多张牌,牌面分别从-100到100,玩家每次从中间随机抽出一张牌,牌面就算是那个玩家的得分了(负数就扣分),然后把牌放回去重新洗 牌。玩完n局后看谁的得分多,谁就是赢家。如果最后有多个最高分,那么这些最高分获得者,在游戏的过程中最先达到或超过最高分的那个玩家就是赢家。
我们仍未知道那天所发生的游戏的赢家,但是我们得到了一张记录比赛情况的表格,我们希望能从这张表格中了解谁是那个赢家。
输入
第一行是一个正整数n,表示一共抽了几次牌。 接下去有n行,每行有一个名字name和一个分数score,表示这次的抽牌者和抽出来的牌的牌面。name为只包括英文字符的字符串,长 度<=50,且-100<=score<=100,0<n<1000。
输出
输出只有一行,为最后的赢家的名字。
样例输入
3
hcbbt 20
yagami 100
hcbbt 80
样例输出
yagami
参考代码
#include<stdio.h>
struct
{
char name[55];
int score;
}
a[1000];
int main()
{
int n;
scanf("%d",&n);
int i=0,j,k;
char name[55];
int s;
int x=0;
int flag;
scanf("%s",&a[0].name);
scanf("%d",&a[0].score);
int max=a[0].score;
int maxw=0;
int w=0;
for (j=1;j<n;j++)
{
flag=0;
scanf("%s",&name);
scanf("%d",&s);
for (i=0;i<=x;i++)
{
if(strcmp(name,a[i].name)==0)
{
a[i].score+=s;
flag=1;
if(a[i].score>max)
{
max=a[i].score;
w=i;
}
if(s<0&&i==w)
{
for (k=0;k<=x;k++)
{
max=0;
if(a[x].score>max)
{
max=a[x].score;
w=x;
}
}
}
}
}
if(flag==0)
{
x++;
strcpy(a[x].name,name);
a[x].score=s;
if(a[x].score>max)
{
max=a[x].score;
w=x;
}
}
}
printf("%s",a[w].name);
return 0;
}
解析
暂无