NBA總冠軍【排序】
阿新 • • 發佈:2018-12-15
題目描述
又要考試了,LJW決定放鬆一下,就開啟電視,看見籃球賽,他立即想到了每年的NBA總冠軍隊伍。由於複習緊張,他只記起了一部分,記憶的內容是正確的,可能不是按時間順序排列的,記憶的內容可能有重複。
現在請求學過程式設計的你幫助LJW,按時間順序依次輸出總冠軍球隊(不能重複)。(NBA從1947A.D到2009A.D)
輸入
輸入檔案nba.in的第一行是一個整數n(0接下來的n行,每行先是城市名(由大小字母、空格組成),後是時間(由數字組成)。二者之間用空格隔開。
輸出
輸出檔案nba.out共n行,即排序後的NBA總冠軍隊伍。每行先是時間,後是城市名。
輸入樣例
3
Boston 1963
Boston 1959
Philly 1947
輸出樣例
1947 Philly
1959 Boston
1963 Boston
解題思路:
用桶排將每一個字串放進一個數組中,在從最小直到最大值跑一邊,有數輸出,無數就跳過
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int n,x,a[2020];
string b[2020],s;
int main()
{
scanf("%d",&n);
getchar();
for (int i=1;i<=n;i++)
{
x=0;
getline(cin,s);
for (int j=s.size()-4;j<s.size();j++) x=x*10+s[j]-48;//把字串的數字部分摘下來
s.erase(s.size()-4,4);//把字串的數字部分減去
b[x]=s;//儲存
a[x]=1;//有數
}
for (int i=1;i<=2009;i++)
if (a[i]) printf("%d ",i),cout<<b[i]<<endl;//輸出
}