最開始我的想法是,把學校名字雜湊,然後建乙個266
26^6
266那麼大的結構體陣列,但是那樣子占用太多記憶體,陣列索引也要用長整形。因此我換了乙個思路。
首先建立乙個map容器,構造學校名字到結構體的對映。然後依次讀取資料,把資料按照索引存入。由於map無法排序,所以開乙個新的結構體陣列,借助乙個迴圈吧每乙個map的值(也就是結構體)存到結構體陣列中。最後對結構體進行排序順次輸出。
(這個方法特別適合那種動態輸入,必須要全輸入之後才能知道有多少各學校,因為鍵是有重複的,因此不能順次存入)
這裡的string我用的c++中的string容器,所以用scanf輸出的時候需要用.c_str()轉化一下。其實用cstring也完全可以。
;\\注意左開右閉,從1開始使得下標即排名
cout<
int r=1;
for(
int i=
1;i<=cnt;i++
)elseif(
(int
)s[i]
.total==
(int
)s[i-1]
.total)
else
}return0;
}
1085 PAT單位排行(25 分)
我是卡在了最後乙個測試點。也就是 測試點 5 不是執行超時的問題,反而是答案錯誤。花了我好長時間終於發現了問題 是這樣。因為最後答案要求 加權總分定義為乙級總分 1.5 甲級總分 頂級總分 1.5的整數部分 我也注意到最後輸出是整數部分。但是我忘記了比較的時候!我用double與double 比較 ...
1085 PAT單位排行 (25 分
每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入格式 輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校 其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表...
1085 PAT單位排行 25 分
每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表甲級,t代表...