題目敘述
每筆測資第一行有一個正整數N,接下來會有N行,每行有一個字串和一個數字。要求輸出將數字排序過後的字串 (需轉乘整數型態輸出)。
範例輸入 #1
3
ONE 368
THREE 1980
SEVEN 1624
範例輸出 #1
173
範例輸入 #2
6
FOUR 1911
SIX 1914
NINE 1782
EIGHT 573
TWO 42
FIVE 987
範例輸出 #2
285946
解題思路
使用Pair的方式將字串和年份輸入,這樣可以直接做排序。字串轉乘數字可以使用Map來做判斷。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
pair<int, int> rtn (int a, int b)
{
pair<int, int>tmp;
tmp.first = a;
tmp.second = b;
return tmp;
}
int main() {
map<string, int>MAP;
MAP["ONE"] = 1;
MAP["TWO"] = 2;
MAP["THREE"] = 3;
MAP["FOUR"] = 4;
MAP["FIVE"] = 5;
MAP["SIX"] = 6;
MAP["SEVEN"] = 7;
MAP["EIGHT"] = 8;
MAP["NINE"] = 9;
int N;
cin >> N;
vector<pair<int, int>>v;
for (int i = 0; i<N; i++)
{
string str;
int num;
cin >> str >> num;
v.push_back(rtn(num, MAP[str]));
}
sort(v.begin(), v.end());
for (int i = 0; i<N; i++)
{
cout << v[i].second;
}
cout << "\n";
}
留言
張貼留言