1015 德才論(C語言)

2021-09-11 17:01:24 字數 1511 閱讀 4753

設計思路:

在輸入過程中將不錄取資料丟棄,並返回錄取人數

利用 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...