題目連結:
題目大意:
第一列給定一正整數 N (1 ≦ N ≦ 50),代表有 N 部影片。接著有 N 列輸入,每列給定一字串 S 以及四個正整數 P 、 L 、 W 、 R (S 不含空格,且字元數不超過 15 個;1 ≦ P ≦ 10 ^ 7 ; 1 ≦ L 、 W ≦ 180 ; 1 ≦ R ≦ 10),依序代表一部影片的名稱、觀看人數、影片長度、平均觀看時間以及相關係數。
而一部影片的「優先推薦係數」之公式為
觀看人數 × 平均觀看時間 ÷ 影片長度 × 相關係數
請將這 N 部影片按照其「優先推薦係數」由大到小排序輸出影片之名稱。如果「優先推薦係數」一致,則輸出較先輸入的影片之名稱。
範例輸入一:
3
A-Fu 1000 4 4 9
HowHow 100 5 4 10
Married 1000 8 7 9
範例輸入二:4
Mina 500 10 7 10
TT 400 5 4 7
CheerUp 420 3 2 6
Twice 900 3 2 5
就像這幾題一樣(
這個、
這個和
這個),用一個結構(Struct)將一個影片的所有資料包成同一個物件。然後依據題目的條件(計算公式)去幫這 N 個物件排序。
但是因為公式裡面有一個除法。所以兩者的比較有可能會有浮點數誤差的困擾。因此在比較如下列的「優先推薦係數」時:
P1 × W1 ÷ L1 × R1 ? P2 × W2 ÷ L2 × R2
其中的 ? 代表兩者的關係。
左右兩邊同乘以 L1 × L2 ,變為
P1 × W1 × L2 × R1 ? P2 × W2 × L1 × R2
而因為影片長度 L1 、 L2 皆為正數,所以不會影響原本的大小關係。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。