設計思路:
在輸入過程中將不錄取資料丟棄,並返回錄取人數
利用 qsort 函式進行快速排序,防止超時
編譯器:c (gcc)
#include
#include
typedef
struct
student;
intinputstudent
(int n,
int low,
int high, student s)
;/*input 並返回合格人數*/
intcompstudent
(const
void
*a,const
void
*b);
/*為 qsort 提供比較函式*/
intcmpstudent
(int n, student s)
;/*此氣泡排序超時,棄用*/
intoutputstudent
(int m, student s)
;/*output*/
intmain()
intinputstudent
(int n,
int low,
int high, student s)
else
if(s[i]
.d >= high && s[i]
.c >= high)
else
if(s[i]
.d >= high)
else
if(s[i]
.d >= s[i]
.c)else
}return n-m;
}int
compstudent
(const
void
*s1,
const
void
*s2)
intoutputstudent
(int m, student s)
return0;
}int
cmpstudent
(int n, student s)
else
if(s[j]
.r == s[j+1]
.r && s[j]
.sum < s[j+1]
.sum)
else
if(s[j]
.r == s[j+1]
.r && s[j]
.sum == s[j+1]
.sum && s[j]
.d < s[j+1]
.d)else
if(s[j]
.r == s[j+1]
.r && s[j]
.sum == s[j+1]
.sum &&
(s[j]
.d == s[j+1]
.d && s[j]
.id > s[j+1]
.id))}
}return0;
}
PAT 乙級 1015 德才論(C語言)
本題其實並不難,過線考生分為4類,在每一類下的考生排序要求都是相同的。所以我們可以直接將不同類別過線考生存在不同陣列中分別進行排序,此處不建議存在同一陣列中進行排序。使用了qsort函式,根據排序要求編寫cmp函式 include include define max 100000 typedef ...
PAT B 1015 德才論(C語言)
宋代史學家司馬光在 資治通鑑 中有一段著名的 德才論 是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,苟不得聖人,君子而與之,與其得小人,不若得愚人。現給出一批考生的德才分數,請根據司馬光的理論給出錄取排名。輸入格式 輸入第一行給出 3 個正整數,分別為 n 10...
1015 德才論 25 分 C語言
宋代史學家司馬光在 資治通鑑 中有一段著名的 德才論 是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,苟不得聖人,君子而與之,與其得小人,不若得愚人。現給出一批考生的德才分數,請根據司馬光的理論給出錄取排名。輸入格式 輸入第一行給出 3 個正整數,分別為 n 10...