按要求,給國家進行排名。
有多組資料。
第一行給出國家數n,要求排名的國家數m,國家號從0到n-1。
第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數(百萬)。
接下來一行給出m個國家號。
排序有4種方式: 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例
對每個國家給出最佳排名排名方式 和 最終排名
格式為: 排名:排名方式
如果有相同的最終排名,則輸出排名方式最小的那種排名,對於排名方式,金牌總數 < 獎牌總數 < 金牌人口比例 < 獎牌人口比例
如果有並列排名的情況,即如果出現金牌總數為 100,90,90,80.則排名為1,2,2,4.
每組資料後加乙個空行。
輸入4 4
4 8 1
6 6 2
4 8 2
2 12 4
0 1 2 3
4 28 10 1
8 11 2
8 12 3
8 13 4
0 3輸出
1:31:1
2:11:2
1:11:1
這道題本意是用sort重定義排序函式,但在這裡換一種思路,只比較每個國家間各項排名,如果小於某一國家排序就加一,這樣比較好理解。
這樣去想就是最後一步輸出麻煩些,要自己寫乙個查詢函式
用物件導向的思想做很合適,給定了奧運金牌數,獎牌數,人口數,和國家序號,這裡注意測試用例中人口數可能為0,要求輸出金牌人口比例 獎牌人口比例則需要處理一下,於是將結構體中所有所有成員定義為float
由上定義結構體,包含goal,model,civil,goalb,modelb
每個測試用例最後一行輸入是需要排名的國家號,我們將存入w並置為1,在後續比較時,只需要把w[i]=1的國家拿出來比較,if 不為1,continue
#include
//不用排序,只要遇見比自己記錄高的把排名+1就行
//國家結構體
struct kuni
;int
main()
//輸入記錄要排名的國家
for(
int i =
0; i)//國家排名
for(
int i =
0; i)//如果人口為0且被除數不為0,則比例都為第一名
if(kuni[i]
.civil <1)
//查詢四種排序方法裡的最小排名
if(goldbr <= modelbr)
else
}else
else}}
printf
("\n");
}return0;
}
這道題研究了兩天,今天終於捋清楚啦,可以往下繼續了 2010 浙大機試 奧運排序問題
題目1007 奧運排序問題 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 9450 解決 2044 題目描述 按要求,給國家進行排名。輸入 有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一...
C 奧運排序問題
按要求,給國家進行排名。有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對每個國家給出最佳排名排名方式 和 最終排名 格...
奧運排序問題
時間限制 1 sec 記憶體限制 32 mb 按要求,給國家進行排名。有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對...