奧運排序問題

2021-09-24 04:43:24 字數 1292 閱讀 1444

題目描述

按要求,給國家進行排名。

輸入有多組資料。

第一行給出國家數n,要求排名的國家數m,國家號從0到n-1。

第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數(百萬)。

接下來一行給出m個國家號。

輸出排序有4種方式: 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例

對每個國家給出最佳排名排名方式 和 最終排名

格式為: 排名:排名方式

如果有相同的最終排名,則輸出排名方式最小的那種排名,對於排名方式,金牌總數 < 獎牌總數 < 金牌人口比例 < 獎牌人口比例

如果有並列排名的情況,即如果出現金牌總數為 100,90,90,80.則排名為1,2,2,4.

每組資料後加乙個空行。

樣例輸入

4 44 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

提示本題需要解決的是奧運會中各國家最有利的排名方式以及名次。只要進行五次排序即可。首先讀入各國家資訊,寫好國家編號,計算和儲存排名所需要的資料。然後按四種排名方式分別對需要排名的國家進行排名,並記錄名次。最後使用國家編號對國家進行排名。這樣就可以輸出結果了。

#includeusing namespace std;

int n,m;

struct statesta[110]; //結構體,金牌,銀牌,人數

int sort(struct state sta,int s,int a) //排序

{ int rank=1; //排名

if(a==1) //排序方式為1,即金牌排序法

{ for(int i=0;i>n>>m)

{ for(int i=0;i>sta[i].gold>>sta[i].medal>>sta[i].num; //輸入

for(int i=0;i>s[i];

for(int i=0;i按照提示中的排五次序,sort函式中進行了四次排序,即題目中的四種

這四種排序的思路是,利用乙個結構體進行記錄,然後按題目所給順序進行比較,如果值小的便靠後,即rank++

最後的排序於main函式中,是對排名方式最小的那種排名進行排序

用陣列的下標記錄排名方式,rank陣列記錄排名

這樣就可達到題目要求

奧運排序問題

時間限制 1 sec 記憶體限制 32 mb 按要求,給國家進行排名。有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對...

奧運排序問題

按要求,給國家進行排名。輸入描述 有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。輸出描述 排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對每個國家給出最佳排名排名方...

問題 奧運排序問題

題目描述 按要求,給國家進行排名。輸入有多組資料。第一行給出國家數n,要求排名的國家數m,國家號從0到n 1。第二行開始的n行給定國家或地區的奧運金牌數,獎牌數,人口數 百萬 接下來一行給出m個國家號。輸出排序有4種方式 金牌總數 獎牌總數 金牌人口比例 獎牌人口比例 對每個國家給出最佳排名排名方式...