Problem
http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=2271
Thinking
對於排序, C++有內建兩種分別是
- std::sort
-
stable::sort
至於這兩者有什麼差別請你google.
在這邊我們使用std::sort
這題題目裡要使用兩個key
做排序,所以我就自己設計一個score
的type ,分別儲存兩個key
, 然後在設計compare
, 比較完第一個key
在比較第二個key
這樣就行啦(請參考以下comp
函數).
Solution
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct
{
int id;
int math;
int english;
}score;
bool comp(score a,score b)
{
if(a.math == b.math)
return a.english > b.english;
return a.math > b.math;
}
int main()
{
int length;
cin >> length;
score *scores = new score[length];
for(int i = 0 ; i < length ; i++)
cin >> scores[i].id >> scores[i].math >> scores[i].english;
sort(scores,scores + length,comp);
for(int i = 0 ; i < length ; i++)
cout << scores[i].id << " " << scores[i].math << " " << scores[i].english << endl;
return 0;
}
网友评论