也是简单的实现题,还是在学习大牛的代码!
我的代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct P
{
string name;
int s;
}p1[1010],p2[1010];
bool cmp(P a,P b)
{
return a.s > b.s;
}
int main()
{
int n,i,j,k,k1;
P tmp;
while(cin>>n)
{
k = 0;k1 = 0;
for(i = 0;i < n;i ++)
{
cin>>tmp.name>>tmp.s;
for(j = 0;j < k;j ++)
{
if(p1[j].name == tmp.name){ p1[j].s += tmp.s;p2[k1].name = tmp.name;p2[k1++] = p1[j];break;}
}
if(j == k) {p1[k++] = tmp;p2[k1++] = tmp;}
}
sort(p1,p1+k,cmp);
int l = p1[0].s;
for(i = 0;i < k1;i ++)
{
if(p2[i].s >= l)
{
for(j = 0;j < k;j ++)
{
if(p1[j].name == p2[i].name&&p1[j].s == l)
{
cout<<p1[j].name<<endl;
i = k1;
break;
}
}
}
}
}
}
用了map后的代码:简洁了很多。
#include <iostream>
#include <map>
#include <string.h>
#include <algorithm>
using namespace std;
int score[1010];
map<string, int> p1,p2;
string name[1010];
int main()
{
int n,i,j;
while(cin>>n)
{
int m = 0;
for(i = 0;i < n;i ++)
{
cin>>name[i]>>score[i];
p1[name[i]] += score[i];
}
for(i = 0;i < n;i ++)
if(p1[name[i]] > m) m = p1[name[i]];
for(i = 0;i < n;i ++)
{
p2[name[i]] += score[i];
if(p2[name[i]] >= m&&p1[name[i]] == m)
{
cout<<name[i]<<endl;
break;
}
}
}
}