NBA总冠军

> Description
  又要考试了,LJW决定放松一下,就打开电视,看见篮球赛,他立即想到了每年的NBA总冠军队伍。由于复习紧张,他只记起了一部分,记忆的内容是正确的,可能不是按时间顺序排列的,记忆的内容可能有重复。
  现在请求学过编程的你帮助LJW,按时间顺序依次输出总冠军球队(不能重复)。
  (NBA从1947A.D到2009A.D)


> Input
输入文件nba.in的第一行是一个整数n(0接下来的n行,每行先是城市名(由大小字母、空格组成),后是时间(由数字组成)。二者之间用空格隔开。


> Output
输出文件nba.out共n行,即排序后的NBA总冠军队伍。每行先是时间,后是城市名。


> Sample Input
3
Boston 1963
Boston 1959
Philly 1947


> Sample Output
1947 Philly
1959 Boston
1963 Boston


> 解题思路
这一道题就是输入的时候要注意一下,然后还要注意的是:城市名很有可能中间有空格,而且输入的年份和城市有可能会重复输入。我就是忘记判断重复了所以才拿了50分。


> 代码

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int lil=0,aka,tt,ll,t[4000],n,len;
string l,a[4000];
char s[1000];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		len=0; ll=1; aka=0;
		do
		{
			scanf("%c",&s[++len]);
		}while(s[len]<'0'||s[len]>'9');
		
		cin>>l;
		tt=l.size();
		for(int j=1;j<=tt;j++,ll*=10)
		   aka+=(l[tt-j]-'0')*ll;
		if(a[(s[len]-'0')*ll+aka]=="")
		{
			t[++lil]=(s[len]-'0')*ll+aka;
			for(int j=2;j<len;j++) a[t[lil]]+=s[j];
		}
	}
	sort(t+1,t+1+lil);
	for(int i=1;i<=lil;i++)
	 cout<<t[i]<<" "<<a[t[i]]<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43010386/article/details/83624705
今日推荐