NBA总冠军
题目描述
又要考试了, LJW 决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的 NBA总冠军队伍。由于复习紧张,他只记起了一部分,记忆的内容可能有重复。 现在请求学过编程的你帮助 LJW,按时间顺序依次输出总冠军的球队(不能重复)。
( NBA 从 1947A.D 到 2009A.D)
输入
输入文件第一行是一个正整数 n(0<n<50)。
接下来的 n 行,每行先是城市名(由大小写字母、空格组成),后是时间(由数字组成)。二者之间用 1 个空格隔开。
输出
输出文件共若干行,即排序后的 NBA 总冠军队伍。每行先是时间,后是城市名,中间用一个空格隔开。
弄个结构体按照年份排序即可。需要注意的是球队名字里可能有空格。
代码如下
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
struct NBA{
string name;
int year;
}a[51];
int n;
bool cmp(NBA x,NBA y){
return x.year<y.year;
}
int main(void){
scanf("%d\n",&n);
for(int i=1;i<=n;++i){
getline(cin,a[i].name);
int x=0;
for(int j=0;j<a[i].name.length();++j)
if((a[i].name[j]>='0')&&(a[i].name[j]<='9'))x=x*10+a[i].name[j]-'0';
a[i].year=x;
a[i].name.erase(a[i].name.size()-5,5);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;++i)
if(a[i].year!=a[i-1].year)
cout<<a[i].year<<" "<<a[i].name<<endl;
}